Skip to content

Instantly share code, notes, and snippets.

@mixj93
Last active March 27, 2018 07:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mixj93/39a36f82a61381b8e56fa7f57c76be03 to your computer and use it in GitHub Desktop.
Save mixj93/39a36f82a61381b8e56fa7f57c76be03 to your computer and use it in GitHub Desktop.
Flask 101
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)
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