以 Flask 形式 (WTForm) 嵌套 FieldList/FormField 加载数据
Load data in nested FieldList/FormField in flask forms (WTForm)
我有一个问题 initiating/populating 带有嵌套数据的表单。
表格如下:
field_1 --> FieldList(FormField)
field_1_1 --> StringField
field_1_2 --> StringField
field_1_3 --> FieldList(StringField)
我想使用 my_form = my_form_class(**data)
.
实例化表单
这是 data
的样子:
data = {
"field_1 ": [
"field_1_1": "abc",
"field_1_2": "abc",
"field_1_3": ["abc", "abc", "abc"]
]
}
但是实例化后,my_form.data
为空,my_form.validate()
不通过
我还有其他类似的表单,只是少了一层嵌套(FormField
中没有 FieldList
)并且工作正常,这可能是问题所在吗?
This person 遇到同样的问题(无解决方案)。通过搜索,我看到人们在谈论多个 CSRF 令牌?这是如何工作的?
有什么想法吗?
解决方案是使用:
my_form = my_form_class()
my_form.process(data=form_data_json)
而不是:
my_form = my_form_class(**data)
检查 this part 关于 .process()
方法的文档:
Since BaseForm does not take its data at instantiation, you must call this to provide form data to the enclosed fields.
我有一个问题 initiating/populating 带有嵌套数据的表单。
表格如下:
field_1 --> FieldList(FormField)
field_1_1 --> StringField
field_1_2 --> StringField
field_1_3 --> FieldList(StringField)
我想使用 my_form = my_form_class(**data)
.
这是 data
的样子:
data = {
"field_1 ": [
"field_1_1": "abc",
"field_1_2": "abc",
"field_1_3": ["abc", "abc", "abc"]
]
}
但是实例化后,my_form.data
为空,my_form.validate()
不通过
我还有其他类似的表单,只是少了一层嵌套(FormField
中没有 FieldList
)并且工作正常,这可能是问题所在吗?
This person 遇到同样的问题(无解决方案)。通过搜索,我看到人们在谈论多个 CSRF 令牌?这是如何工作的?
有什么想法吗?
解决方案是使用:
my_form = my_form_class()
my_form.process(data=form_data_json)
而不是:
my_form = my_form_class(**data)
检查 this part 关于 .process()
方法的文档:
Since BaseForm does not take its data at instantiation, you must call this to provide form data to the enclosed fields.