【发布时间】:2017-08-16 12:05:18
【问题描述】:
我有以下 Flask-WTF 表单:
class PersonForm(FlaskForm):
name = StringField('Name', validators=[DataRequired()])
age = IntegerField('Age', validators=[NumberRange(min=0)], render_kw={'type': 'number'})
educated = BooleanField('Educated', render_kw={'type': 'checkbox'})
我知道我可以通过将值传递到表单中来预先填充表单,如下所示:
form = PersonForm(name='Johnny', age=25, educated=True)
我注意到有一种更好的方法可以通过将对象注入到表单中来做到这一点(参考 here 和 here)。我尝试了以下方法,但是它不起作用。我哪里出错了(对象应该不是字典)?
person = {'name': 'Johnny', 'age': 25, 'educated'=True}
form = PersonForm(obj=person)
请注意,这些预先填充的值来自数据库。有些值是定义的,有些则没有。例如,另一个“人”可能看起来像 {'name': 'Jessica', 'educated': True}(在这种情况下,年龄字段将为空)。
【问题讨论】:
-
是的,它需要是一个 MultiDict。这就是烧瓶请求发布数据返回的内容。它旨在与烧瓶请求中的发布数据一起使用。
-
如何根据从数据库中检索到的数据创建 MultDict?
-
你试过
form = PersonForm(data=person)吗?
标签: python forms wtforms flask-wtforms