1

いくつかの基本的なビューを含むシンプルなFlaskアプリがあります。これらのビューの1つは結果と呼ばれます。GETを使用してURLパラメーターを取得し、パラメーターを使用して一連の操作を実行し、最後にを使用してテンプレートをレンダリングしrender_template()、計算値を渡します。

レンダリングすると、結果のURLは次のようになります。

http://127.0.0.1:5000/result?s=abcd&t=wxyz

私がやりたいのは、結果ビューの下でテンプレートをレンダリングする代わりに、新しいビューにリダイレクトし(finalと呼びましょう)、リダイレクトとともに計算された値を渡し、そこからテンプレートをレンダリングしたいと思います。なぜこれをすべて行うのですか?代わりに、最終的なURLを次のように表示したいので:

http://127.0.0.1:5000/final/abcd

タイトルが少し曖昧でごめんなさい。

4

1 に答える 1

2

最終URLで「abcd」する最も簡単な解決策は、実際の結果である可能性があります。

@app.route("/result")
def calculate_result():
    s, t = request.args.get("s"), request.args.get("t")
    # Calculate result with s and t
    return redirect(url_for(".display_results", result=result))

@app.route("/final/<result>")
def display_results(result):
    return render_template("results.html", result=result)

それができない場合は、session代わりに次を使用できます。

@app.route("/result")
def calculate_result():
    s, t = request.args.get("s"), request.args.get("t")
    # Calculate result with s and t
    session["result"] = result
    return redirect(url_for(".display_results", result=result))

@app.route("/final/abcd")
def display_results():
    result = session.get("result")
    return render_template("results.html", result=result)
于 2012-08-04T01:53:17.040 に答える