我有一个简单的Flask应用程序,它包含一些基本视图。其中一种观点叫做结果。它所做的是使用GET获取URL参数,然后使用这些参数执行一系列操作,最后使用render_template()
渲染模板并将计算值传递给它。
在渲染时,结果URL看起来像这样:
http://127.0.0.1:5000/result?s=abcd&t=wxyz
我想做的不是在结果视图下渲染模板,而是重定向到一个新视图(我们称之为最终视图),将计算值与重定向一起传递,然后从那里渲染模板。为什么要这么做?因为我希望最终的URL看起来像这样:
http://127.0.0.1:5000/final/abcd
如果标题有点含糊,我很抱歉。
最终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)