Web服务器如何处理Web表单?

时间:2018-04-24 04:56:20

标签: python flask flask-wtforms

我正在通过 Flask Web Development 这本书学习烧瓶。我对Web服务器如何处理Web表单感到困惑。更具体地说,如何在Web服务器中处理POSt请求?

以下是用于生成对主索引请求的响应的代码段:

@app.route('/', methods=['GET', 'POST'])
def index():
    name = None
    form = NameForm()
    if form.validate_on_submit():
        name = form.name.data
        form.name.data = ''
    return render_template('index.html', form=form, name=name)

在我看来,当客户端第一次访问主索引时,flask应用程序将收到GET请求。此GET请求将由index视图功能处理。 form将从NameForm()构建,当时它将为空。因此form.validate_on_submit()将返回false。

然后,当用户通过POST请求提交带有数据的表单时,index视图功能也会处理它。所以另一个form将从NameFrom()构建,我认为它也是空的,这使得form.validate_on_submit()仍然返回false。

显然,我的想法是错误的。

我的问题是:当用户通过POST提交表单时,form.validate_on_submit()如何评估为真?

提前致谢!

1 个答案:

答案 0 :(得分:1)

使用Flask时,可以从flask.request获取当前请求上下文。请求对象包括当前方法和POST变量(以及来自HTTP协议的标头/ cookie /路径等)。

当调用form.validate_on_submit()时,此方法使用当前请求对象在提取和验证POST变量之前首先检查请求方法是否为POST。

相关问题