在FLASK中的输出中打印JSON数据

时间:2016-08-16 16:35:53

标签: python json flask

所以我有这个测试应用程序(学习瓶)。它需要一个用户名和一条消息输入,并将其显示在第三页上。最后一次"返回"下面吐出那些数据。我需要在其下面包含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()

1 个答案:

答案 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'])