我正在阅读flask mega 教程第 5 章,发现其中有一部分我不明白:form
变量似乎在对路由函数的调用之间保持在范围内,请参见下面的代码(第 5 章中的完整示例中的缩写)。
@app.route("/register", methods=["GET", "POST"])
def register():
form = RegistrationForm()
if form.validate_on_submit():
#Add user to data base
return redirect(url_for("login"))
return render_template("register.html", title="Register", form=form)
我的理解如下:
首次导航到时,/register
它会被调用"GET"
。 会form
被实例化,并且form.validate_on_submit()
会false
返回表单,然后用户会填写表单。
当用户提交表单时,/register
路由被调用。在我看来,上次调用"POST"
的函数范围应该丢失,一个新的实例应该再次被实例化,我们会陷入循环。register()
form
form.validate_on_submit
false
调试表明它不是这样工作的,我最好的理解是它form
以某种方式持续存在,但我不明白为什么/它通过什么机制持续存在。有人能告诉我吗?