如何使用flask.jsonify和在Flask路由中呈现模板
是否可以渲染模板并flask.jsonify
在同一路径中使用?
@app.route('/thankyou')def thankyou():
db = get_db()
summary_cursor = db.execute('SELECT * FROM orders JOIN order_items USING (transaction_id) WHERE orders.transaction_id = (SELECT MAX(transaction_id) FROM orders)')
summary = summary_cursor.fetchall()
data = map(list, summary)
print data
return render_template('thankyou.html', summary = json.dumps(data))
现在,我正在使用json.dumps
序列化数据,但是这样做确实有些奇怪。我想使用jsonify
,因为执行此操作时,我得到一个非常漂亮的输出,似乎可以更好地与之配合使用:
@app.route('/thankyou')def thankyou():
db = get_db()
summary_cursor = db.execute('SELECT * FROM orders JOIN order_items USING (transaction_id) WHERE orders.transaction_id = (SELECT MAX(transaction_id) FROM orders)')
summary = summary_cursor.fetchall()
data = map(list, summary)
print data
return jsonify(summary = data)
有什么办法可以将两者结合起来吗?
回答:
如果你需要在一条路由中针对不同的情况返回不同的响应对象:render_template将unicode
转换转换为有效Response
并jsonify
返回已经存在的Response
对象,因此可以在同一路由中使用这两种方法:
@app.route('/thankyou')def thankyou():
db = get_db()
summary_cursor = db.execute('SELECT * FROM orders JOIN order_items USING (transaction_id) WHERE orders.transaction_id = (SELECT MAX(transaction_id) FROM orders)')
summary = summary_cursor.fetchall()
data = map(list, summary)
print data
if request.args['type'] == 'json':
return jsonify(summary = data)
else:
return render_template('thankyou.html', summary=data))
以上是 如何使用flask.jsonify和在Flask路由中呈现模板 的全部内容, 来源链接: utcz.com/qa/419785.html