所以我有这个测试应用程序(学习瓶)。它需要一个用户名和一条消息输入,并将其显示在第三页上。最后一次"返回"下面吐出那些数据。我需要在其下面包含JSON等效的数据。我想我需要输入用户名'和'消息'变成一个变量并调用json转储来返回它?在这里杀了我自己。
from flask import Flask, render_template, request,
redirect, url_for,abort, session
import json
from json import dumps
app = Flask(__name__)
app.config['SECRET_KEY'] = 'F34TF$($e34D';
@app.route('/')
def home():
return render_template('index.html')
@app.route('/signup', methods=['POST'])
def signup():
session['username'] = request.form['username']
session['message'] = request.form['message']
return redirect(url_for('message'))
@app.route('/message')
def message():
if not 'username' in session:
return abort(403)
return render_template('message.html',
username=session['username'],message=session['message']),
if __name__ == '__main__':
app.run()
答案 0 :(得分:1)
This就是您所需要的。该页面也有例子。你可以做下面这样的事情。通常,您可能希望使用html或json进行响应,具体取决于accept标头。它定义了客户端期望的数据。 如果accept是'application / json',请使用jsonify。如果accept是'text / html',那么渲染你的模板。这样,从浏览器加载时页面就会正常,但是当使用具有相应设置的接受标头的restclient时,会得到json响应。
from flask import request
@app.route('/message')
def message():
if not 'username' in session:
return abort(403)
if request.headers['accept'] == 'text/html':
return render_template('message.html',
username=session['username'],message=session['message'])
elif request.headers['accept'] == 'application/json':
return jsonify(
username=session['username'], message=session['message'])