Python 如何使用flask.jsonify并在flask路由中呈现模板
是否可以呈现模板并在同一路线中使用Python 如何使用flask.jsonify并在flask路由中呈现模板,python,json,flask,Python,Json,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 orde
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
returnunicode
转换为有效的response
和jsonify
return readyresponse
对象,因此您可以在同一路由中使用这两个对象:
@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))
tojson
filter。请参阅我的另一个答案:谢谢你。你能再解释一下选项3吗?我对此有点困惑。例如,您应该有一些json响应:
{“status”:“ok”,“data”:[{“name”:“info”,“content”:“info HTML content THERE”},{“name”:“profile”,“content”:“profile HTML content THERE”},…]}
。每个数据项都包含使用一些模板和参数生成的内容。因此,要创建json响应,您可以执行以下操作返回jsonify({'status':'ok','data':[{'name':name','content':render_template(tmpl,**args)}作为db_cursor.fetchall()中的name,tmpl,args)
。啊,好的,这很有意义。我想我将使用选项二。谢谢您的帮助。