视图函数 POST 方法重新创建 FlaskForm 内容不清空

2016-10-12 12:08:41 +08:00
 sudo987
@app.route('/', methods=['GET', 'POST'])
def index():
    form = NameForm()
    if form.validate_on_submit():
        old_name = session.get('name')
        if old_name != form.name.data:
            flash("It seems you've changed your name.")
        session['name'] = form.name.data
        form.name.data = ''
        return redirect(url_for('index'))
    return render_template('index.html', name = session.get('name'), current_time = datetime.utcnow(), \
                           form = form)

上述代码中 form.name.data 取得 name 数据,但是在这之前已经运行了 form = NameForm(), 我的理解是已经重新创建了一个新的 NameForm,此处的 name 应该是 None, 但事实上 name 的值就是 POST 方法提交的值, 希望大神解惑.

2875 次点击
所在节点    Flask
2 条回复
Kilerd
2016-10-12 12:14:06 +08:00
form = NameForm(request.form)
sudo987
2016-10-12 12:20:13 +08:00
@Kilerd 多谢, 刚才也看到了 FlaskForm 的介绍, If ``formdata`` is not specified, this will use
:attr:`flask.request.form` and
| :attr:`flask.request.files`. Explicitly pass ``formdata=None`` to prevent this.默认值就是 request.form.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/312167

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX