sudo987
V2EX  ›  Flask

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

  •  
  •   sudo987 · Oct 12, 2016 · 3631 views
    This topic created in 3502 days ago, the information mentioned may be changed or developed.
    @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 replies    2016-10-12 12:20:13 +08:00
    Kilerd
        1
    Kilerd  
       Oct 12, 2016
    form = NameForm(request.form)
    sudo987
        2
    sudo987  
    OP
       Oct 12, 2016
    @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.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3209 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 10:53 · PVG 18:53 · LAX 03:53 · JFK 06:53
    ♥ Do have faith in what you're doing.