根据参数将视图路由到另一个URL

时间:2012-08-03 21:14:14

标签: python flask

我有一个简单的Flask应用程序,其中包含一些基本视图。其中一个视图称为结果。它的作用是使用GET获取URL参数,然后使用参数执行一系列操作,最后使用render_template()呈现模板并将计算值传递给它。

在渲染时,结果URL看起来像这样:

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

我想做的不是在结果视图下呈现模板,而是想重定向到新视图(让我们称之为最终),将计算值与重定向一起传递,并从中呈现模板那里。为什么这一切?因为我希望最终的网址看起来像这样:

http://127.0.0.1:5000/final/abcd

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

1 个答案:

答案 0 :(得分: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)