代码之家  ›  专栏  ›  技术社区  ›  thosphor

文本区域已填充时未提交表单数据

  •  0
  • thosphor  · 技术社区  · 6 年前

    基于 this question /我有类似的答案 以下代码:
    app.py

    form = MyForm() # MyForm is defined elsewhere simply as 
                    # class MyForm(FlaskForm): content=TextAreaField()
    prepopulated = GetTextFromDatabase()
    form.content.data = prepopulated
    
    if form.validate_on_submit():
        new_content = form.content.data
        SaveToDatabase(new_content)
    
    return flask.render_template('edit.html', form=form)
    

    edit.html :

    <form method="POST">
      <div>
        {{ form.hidden_tag() }}
        {{ form.content }}
      </div>
      <div>
        <button type="submit">Submit</button>
      </div>
    </form>
    

    但是,提交时,对文本所做的更改不会保存在数据库中。如果我移除 form.content.data = prepopulated 更改已保存。

    那么,我怎样才能预先填充文本区域,同时确保保存对文本的任何更改呢?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Attack68    6 年前

    你还没有共享你的 MyForm default 表单创建步骤中的参数。

    这不起作用的原因是 POSTS 你的路线比你所做的 覆盖数据

    prepopulated = GetTextFromDatabase()
    form.content.data = prepopulated
    

    不如先验证表单数据,然后执行数据库保存,如下所示:

    if form.validate_on_submit():
        new_content = form.content.data
        SaveToDatabase(new_content)
    else:
        prepopulated = GetTextFromDatabase()
        form.content.data = prepopulated
    
    return flask.render_template('edit.html', form=form)