2016-08-16 8 views
-2

このテストアプリ(フラスコの学習)があります。ユーザー名とメッセージ入力があり、それを第3ページに表示します。下の最後の "return"はそのデータを吐き出します。私はそれの下のデータのJSON同等物を含める必要があります。私は変数に 'username'と 'message'を入れ、それを返すためにjsonダンプを呼び出す必要があると思いますか?ここで自分を殺したJSONデータをFLASK内の出力に出力する

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つのこと..あなたのインデントがうんざりされています...あなたの "def"行は、インデントされていてはいけません。とりわけ... –

+0

はあなたが追加しなければならないことですか?本当に?洞察力のある入力に感謝します。 –

+0

あなたは本当に歓迎しています...それはあなたが実際にそれを実行しようとしたのかどうか疑問に思います。あなたはあなたが見ているエラーとあなたが期待しているものに関するいくつかの詳細を提供できますか?それは助けをより簡単にするでしょう。 –

答えて

1

Thisが必要です。ページにも例があります。あなたは以下のようなことができます。通常は、受け入れヘッダに応じて、htmlかjsonのどちらかで応答したいと思うでしょう。これは、クライアントが期待しているデータを定義します。 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']) 
+0

と言いますが、どこに置くのですか? @ app.route( '/ message')にネストしますか? リターン・アボート(403) リターンrender_template( 'メッセージ: セッションの 'ユーザ名' ではない場合: –

+0

はapp.route @ –

+0

( '/メッセージ')...私は間違った道の午前 DEFメッセージを()だと思います[メッセージ]])、 return render_template jsonify( 'message.html'、username –