我无法理解烧瓶路由的逻辑。例如,下面的片段可以处理一个注册表。棘手的(对我来说)部分是这个 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)
谢谢!我对烧瓶路由的逻辑难以理解。
这里的关键概念是 if
有条件的。
你忽略了一个事实,那就是 form.validate_on_submit
是一个 便利功能 等于说
if request.method=="POST" and form.validate():
# ...
你可以看到一个例子,其中显示 此处
当页面第一次被加载时,它是以一个 获取 请求。我们执行第一行 form = ContactForm()
而且,由于我们的条件是 不等于真 但它不会,因为它不是一个POST请求。我们进入最后一行,渲染HTML模板,并传入表单。
现在,一旦页面显示给用户,他们提交表单,我们就会向 和之前的路线一样,但用POST请求。. 现在,我们可以验证表单,假设一切检查完毕,我们可以启动重定向。
希望能帮到你,在你真正适应你所看到的东西之前,肯定会有点混乱。