Last active
March 27, 2018 07:17
-
-
Save mixj93/39a36f82a61381b8e56fa7f57c76be03 to your computer and use it in GitHub Desktop.
Flask 101
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from flask import Flask, request, render_template, jsonify, json, abort | |
app = Flask(__name__) | |
userList = [] | |
''' | |
{ | |
"username": "johnsmith", | |
"age": 24, | |
"gender": "male" | |
} | |
''' | |
def hasUsername(username): | |
for i, user in enumerate(userList): | |
if user["username"] == username: | |
return i | |
return -1 | |
@app.route('/') | |
def index(): | |
return 'Index Page' | |
@app.route('/hello/') | |
@app.route('/hello/<name>') | |
def hello(name=None): | |
return render_template('hello.html', name=name) | |
@app.route('/users', methods=['GET', 'POST']) | |
def users(): | |
if request.method == 'POST': | |
if request.json: | |
user = json.loads(request.data) | |
if not type(user).__name__ == 'dict': | |
print("invalid user format") | |
abort(400) | |
elif not ("username" in user and type(user["username"]).__name__ == 'str') or (hasUsername(user["username"]) > -1): | |
print("invalid username") | |
abort(400) | |
elif not ("age" in user and type(user["age"]).__name__ == "int"): | |
print("invalid age") | |
abort(400) | |
elif not ("gender" in user and type(user["gender"]).__name__ == 'str' and (user["gender"] == "male" or user["gender"] == "female")): | |
print("invalid gender") | |
abort(400) | |
else: | |
userList.append({ | |
"username": user["username"], | |
"age": user["age"], | |
"gender": user["gender"] | |
}) | |
return "post user success" | |
else: | |
abort(400) | |
else: | |
return jsonify(userList) | |
@app.route('/users/<string:username>') | |
def show_user_profile(username): | |
index = hasUsername(username) | |
if index > -1: | |
return jsonify(userList[index]) | |
else: | |
abort(404) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from flask import Flask, request, render_template, jsonify, json, abort | |
app = Flask(__name__) | |
userList = [] | |
''' | |
{ | |
"username": "johnsmith", | |
"age": 24, | |
"gender": "male" | |
} | |
''' | |
def hasUsername(username): | |
for i, user in enumerate(userList): | |
if user["username"] == username: | |
return i | |
return -1 | |
@app.route('/') | |
def index(): | |
return 'Index Page' | |
@app.route('/hello/') | |
@app.route('/hello/<name>') | |
def hello(name=None): | |
return render_template('hello.html', name=name) | |
@app.route('/users', methods=['GET', 'POST']) | |
def users(): | |
if request.method == 'POST': | |
if request.json: | |
user = json.loads(request.data) | |
print type(user["username"]), type(user["age"]), type(user["gender"]) | |
if not (user.has_key("username") and type(user["username"]).__name__ == 'unicode') or hasUsername(user["username"]) > -1: | |
print "invalid username" | |
abort(400) | |
elif not (user.has_key("age") and type(user["age"]).__name__ == "int"): | |
print "invalid age" | |
abort(400) | |
elif not (user.has_key("gender") and type(user["gender"]).__name__ == 'unicode' and (user["gender"].encode("utf-8") == "male" or user["gender"].encode("utf-8") == "female")): | |
print "invalid gender" | |
abort(400) | |
else: | |
userList.append({ | |
"username": user["username"], | |
"age": user["age"], | |
"gender": user["gender"] | |
}) | |
return "post user success" | |
else: | |
abort(400) | |
else: | |
return jsonify(userList) | |
@app.route('/users/<string:username>') | |
def show_user_profile(username): | |
index = hasUsername(username) | |
if index > -1: | |
return jsonify(userList[index]) | |
else: | |
abort(404) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment