1

我有一个简单的 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

如果标题有点含糊,我很抱歉。

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 回答