我正在尝试了解如何最好地使用Flask重定向和传递参数
以下是我的代码,我发现x
和y
未将其纳入模板。
我的语法是否正确?我错过了什么基本的东西?我能够呈现模板,但我想重定向到网址/found
,而不是只返回find.html
的模板
@app.route('/found')
def found(email,listOfObjects):
return render_template("found.html",
keys=email,obj=listOfObjects)
@app.route('/find', methods=['GET','POST'])
def find():
if request.method == 'POST':
x = 3
y = 4
return redirect(url_for('found',keys=x,obj=y))
return render_template("find.html")
答案 0 :(得分:42)
重定向很好,问题在于found
路由。您可以通过多种方式将值传递给端点:作为路径的一部分,URL参数(用于GET请求)或请求体(用于POST请求)。
换句话说,您的代码应如下所示:
@app.route('/found/<email>/<listOfObjects>')
def found(email, listOfObjects):
return render_template("found.html",
keys=email, obj=listOfObjects)
可替换地:
@app.route('/found')
def found():
return render_template("found.html",
keys=request.args.get('email'), obj=request.args.get('listOfObjects'))
此外,您的重定向应该提供请求参数,而不是模板参数:
return redirect(url_for('found', email=x, listOfObjects=y))
希望有所帮助。