0

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

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

从:

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' 从未设置。如果我尝试将其打印到控制台,则为“无”。我没有对模板进行任何更改。我可以在类中设置一个默认值,但它不会被用户在表单中输入的内容所取代。

4

1 回答 1

0

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

# You have
form=SubmitForm

# It should be
form = SubmitForm(request.form)
于 2013-11-02T14:30:32.490 回答