模板页面时重定向

时间:2016-06-08 01:29:48

标签: python html5 web flask

在Flask中,如何在渲染模板时重定向到其他页面?

@app.route('/foo.html', methods=['GET', 'POST'])
def foo():
    if request.method == "POST":
        x = request.form['x']
        y = request.form['y']
        if x > y:
            return redirect(render_template("bar.html", title="Bar"))
        else:
            return render_template("foo.html", title="Foo")

    return render_template("foo.html", title="Foo")


@app.route('/bar.html')
def bar():
    return render_template("bar.html", title="Bar")

return redirect(render_template("bar.html", title="Bar"))会导致模板化显示的整页显示在网址中:

http://localhost:5000/<!DOCTYPE html><html><head><title>Bar</title></head>...

这会导致404错误,因为此页面不存在。

我已经尝试了redirect(url_for('bar'))但我需要将Jinja2变量传递给url_for并让它为页面模板化。

1 个答案:

答案 0 :(得分:2)

要重定向,您需要一个网址

return redirect(url_for('bar'))

您需要从Flask导入url_for。如果您需要传递其他变量,则应将它们作为参数放入

somevalue = 1
return redirect(url_for('bar', somevar=somevalue) )

然后

@app.route('/bar/<somevar>')
def bar(somevar):
    # do something with somevar probably
    return render_template("bar.html", title="Bar")