Flask 路由逻辑
Flask routing logic
我无法理解 flask 路由的逻辑。例如,下面的代码片段可以处理注册表单。棘手的(对我来说)部分是 form.validate_on_submit()
逻辑是 在 模板呈现之前。也就是说,当用户有机会在表单中提交内容时,该函数已经在 return 语句中,超过了 form.validate_on_submit()
逻辑。
尽管如此,这个例子仍然有效。我想了解即使在达到 return 语句后如何执行函数中的逻辑。
@app.route('/', methods=('GET', 'POST'))
def contact():
form = ContactForm()
if form.validate_on_submit():
return redirect(url_for('success'))
return render_template('index.html', form=form)
谢谢!
这里的关键概念是 if
条件。
您错过的事实是 form.validate_on_submit
是一个 便利函数 ,相当于说
if request.method=="POST" and form.validate():
# ...
您可以查看显示此内容的示例 here
首次加载页面时,它带有 GET 请求。我们执行第一行 form = ContactForm()
并且,由于我们的条件 未评估为 True 它不会因为它不是 POST 请求,我们转到最后一行并渲染 HTML 模板,传入表单。
现在,一旦页面显示给用户并且他们提交了表单,我们就会向 与以前相同的路由发送请求,但带有 POST 请求.现在,我们可以验证表单并假设一切都已检查完毕,我们可以触发重定向。
希望对您有所帮助,在您真正对所看到的内容感到满意之前肯定会有点困惑!
我无法理解 flask 路由的逻辑。例如,下面的代码片段可以处理注册表单。棘手的(对我来说)部分是 form.validate_on_submit()
逻辑是 在 模板呈现之前。也就是说,当用户有机会在表单中提交内容时,该函数已经在 return 语句中,超过了 form.validate_on_submit()
逻辑。
尽管如此,这个例子仍然有效。我想了解即使在达到 return 语句后如何执行函数中的逻辑。
@app.route('/', methods=('GET', 'POST'))
def contact():
form = ContactForm()
if form.validate_on_submit():
return redirect(url_for('success'))
return render_template('index.html', form=form)
谢谢!
这里的关键概念是 if
条件。
您错过的事实是 form.validate_on_submit
是一个 便利函数 ,相当于说
if request.method=="POST" and form.validate():
# ...
您可以查看显示此内容的示例 here
首次加载页面时,它带有 GET 请求。我们执行第一行 form = ContactForm()
并且,由于我们的条件 未评估为 True 它不会因为它不是 POST 请求,我们转到最后一行并渲染 HTML 模板,传入表单。
现在,一旦页面显示给用户并且他们提交了表单,我们就会向 与以前相同的路由发送请求,但带有 POST 请求.现在,我们可以验证表单并假设一切都已检查完毕,我们可以触发重定向。
希望对您有所帮助,在您真正对所看到的内容感到满意之前肯定会有点困惑!