V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sudo987
V2EX  ›  Flask

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

  •  
  •   sudo987 · 2016-10-12 12:08:41 +08:00 · 2868 次点击
    这是一个创建于 2949 天前的主题,其中的信息可能已经有所发展或是发生改变。
    @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 方法提交的值, 希望大神解惑.

    2 条回复    2016-10-12 12:20:13 +08:00
    Kilerd
        1
    Kilerd  
       2016-10-12 12:14:06 +08:00
    form = NameForm(request.form)
    sudo987
        2
    sudo987  
    OP
       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.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2754 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:14 · PVG 22:14 · LAX 06:14 · JFK 09:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.