在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并让它为页面模板化。
答案 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")