我有一个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'永远不会设置。如果我尝试将其打印到控制台,则为“无”。我没有对模板进行任何更改。我可以在类中设置默认值,但不会被用户在表单上输入的内容替换。
答案 0 :(得分:0)
在新的控制器中,您实际上并未创建提交表单的实例(您缺少括号)。此外,您从Flask-WTForms扩展切换到普通WTForms。 Flask-WTForms自动使用request.form
,因此您不必使用 - 如果您打算使用vanilla WTForms,则需要将request.form
传递给构造函数。
# You have
form=SubmitForm
# It should be
form = SubmitForm(request.form)