Flask 路由逻辑
Posted
技术标签:
【中文标题】Flask 路由逻辑【英文标题】:Flask routing logic 【发布时间】:2020-05-08 21:01:50 【问题描述】:我无法理解烧瓶路由的逻辑。例如,下面的 sn-p 可以处理注册表单。棘手的(对我来说)部分是form.validate_on_submit()
逻辑是在模板渲染之前。也就是说,当用户有机会在表单中提交某些内容时,该函数已经在 return 语句中,超过了 form.validate_on_submit()
逻辑。
尽管如此,这个例子仍然有效。我想了解即使在达到返回语句之后如何执行函数中的逻辑。
@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)
谢谢!
【问题讨论】:
【参考方案1】:这里的关键概念是if
条件。
您错过的是form.validate_on_submit
是一个便利功能,相当于说
if request.method=="POST" and form.validate():
# ...
您可以看到一个示例,其中显示了 here
第一次加载页面时,它带有 GET 请求。我们执行第一行 form = ContactForm()
并且,由于我们的条件确实不评估为 True 它不会因为它不是 POST 请求,我们转到最后一行并渲染 HTML 模板,传入表单。
现在,一旦向用户显示页面并提交表单,我们就会向与以前相同的路由发送请求,但使用 POST 请求。现在,我们可以验证表单并假设所有内容都已检查,我们可以触发重定向。
希望对您有所帮助,在您真正对所看到的内容感到满意之前肯定会有些混乱!
【讨论】:
谢谢!我没有意识到的是,在提交之后,请求转到相同的路由,但作为 POST 请求。现在一切都为我所用。以上是关于Flask 路由逻辑的主要内容,如果未能解决你的问题,请参考以下文章