烧瓶路由逻辑

时间:2020-05-08 21:01:50

标签: python flask logical-operators execution

我无法绕烧瓶的逻辑缠绕我的头了。例如,下面的代码段可以处理注册表。棘手的(对我而言)部分是form.validate_on_submit()逻辑在模板呈现之前。也就是说,当用户有机会提交表单中的某些内容时,该函数已经在form.validate_on_submit()逻辑中,已经在return语句中。

尽管如此,此示例仍然有效。我想了解即使在到达其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)

谢谢!

1 个答案:

答案 0 :(得分:0)

这里的关键概念是if条件。

您错过的是form.validate_on_submit便利功能的事实,它等同于说

if request.method=="POST" and form.validate():
    # ...

您可以看到一个示例,其中显示了here

首次加载页面时,它带有 GET 请求。我们执行第一行form = ContactForm(),由于我们的条件不会求值为True ,因为它不是POST请求,因此不会求值为,因此我们转到最后一行,并通过表单传递HTML模板。

现在,一旦页面显示给用户并且他们提交了表单,我们就会向与以前相同的路线发送请求,但带有POST请求。现在,我们可以验证表单,并假设所有内容都已签出,就可以触发重定向。

希望得到帮助,在真正适应所要看的内容之前肯定会有些困惑!

相关问题