Flask Web Development 第四章 Web表单 为什么要用form.name.data = ''

发布于 2022-09-01 19:14:28 字数 884 浏览 18 评论 0

@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)
    

在if语句中,这个form.name.data被赋值给局部变量name且表单域的数据属性通过赋值为空字符串而被清除。

问题一:
在上述代码中,为什么需要清除form.name.data

问题二:

如下代码,为什么使用session的时候,就不需要清空form.name.data?

from flask import Flask, render_template, session, redirect, url_for

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如梦 2022-09-08 19:14:28

注意代码的具体意思,在flask中如果你使用修饰器的方式添加路由,需要判断http的方法。
在第一段代码并没有显性的判断是get还是post方法,所以默认是get方法,get方法请求的时侯form.validate_on_submit()是不会验证通过的,所以返回的页面name值为空(None),在你使用post方式提交表单的时候,如果验证通过了,那么name等于提交的值,至于为什么要清掉form.name.data的值,那是因为你不清除的话,提交后返回的页面中表单当中的name值会保留你之前填写的。而第二段判断验证过了使用了重定向页面,所以清不清都无所谓,跟session没关系

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文