烧瓶路由逻辑

问题描述 投票:0回答:1

我无法理解烧瓶路由的逻辑。例如,下面的片段可以处理一个注册表。棘手的(对我来说)部分是这个 form.validate_on_submit() 逻辑是 之前 的模板渲染。也就是说,当用户有机会在表单中提交一些东西时,函数已经在返回语句中,经过了 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)

谢谢!我对烧瓶路由的逻辑难以理解。

python flask logical-operators execution
1个回答
0
投票

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

你忽略了一个事实,那就是 form.validate_on_submit 是一个 便利功能 等于说

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

你可以看到一个例子,其中显示 此处

当页面第一次被加载时,它是以一个 获取 请求。我们执行第一行 form = ContactForm() 而且,由于我们的条件是 不等于真 但它不会,因为它不是一个POST请求。我们进入最后一行,渲染HTML模板,并传入表单。

现在,一旦页面显示给用户,他们提交表单,我们就会向 和之前的路线一样,但用POST请求。. 现在,我们可以验证表单,假设一切检查完毕,我们可以启动重定向。

希望能帮到你,在你真正适应你所看到的东西之前,肯定会有点混乱。

© www.soinside.com 2019 - 2024. All rights reserved.