将wtforms 0.6升级到1.0表单TextField数据无

时间:2013-11-02 00:17:44

标签: python flask wtforms

我有一个flask / wtforms应用程序,我正在从wtforms 0.6.ish升级到1.0.5。开发盒是ubuntu,使用wtforms 0.6,而生产将是一个亚马逊ami,使用wtforms 1.0.5。

为了任何人的利益,到目前为止的以下变化是:

从:

from flask.ext.wtf import Form, TextField
from flask.ext.wtf import Required

为:

from wtforms import Form,  TextField, validators

从:

def index():
  form=SubmitForm()
  if form.validate_on_submit():
    return render_template('js.html',ht=form.ht.data)

为:

def index():
  form=SubmitForm
  if request.method == 'POST' and form.validate():
    return render_template('js.html',ht=form.ht.data)

也:

class SubmitForm(Form):
    ht = TextField('ht', validators = [Required()])

class SubmitForm(Form):
   ht = TextField('ht',  [validators.Required()])

麻烦的是,在wtforms 1.0.5中,表单变量'ht'永远不会设置。如果我尝试将其打印到控制台,则为“无”。我没有对模板进行任何更改。我可以在类中设置默认值,但不会被用户在表单上输入的内容替换。

1 个答案:

答案 0 :(得分:0)

在新的控制器中,您实际上并未创建提交表单的实例(您缺少括号)。此外,您从Flask-WTForms扩展切换到普通WTForms。 Flask-WTForms自动使用request.form,因此您不必使用 - 如果您打算使用vanilla WTForms,则需要将request.form传递给构造函数。

# You have
form=SubmitForm

# It should be
form = SubmitForm(request.form)