我已经使用Jinja定义了一个HTML模板,我在其中定义了三个具有相同名称的文本字段。然后在后端使用get_all方法我收集了所有的值。
然后为了添加表单验证等,我添加了WTForms库。然后我将表格定义为:
class RoleForm(BaseForm):
name = fields.TextField(_('Name'))
在HTML页面中,我将此元素渲染了三(3)次。
现在,当我提交表单并且验证失败时,我使用表单作为输入重新呈现模板。但是相反,每个元素都具有我输入的值,所有文本字段都具有第一个文本字段的值。
此外,如果验证没问题,我使用的是form.name.data,它不会从三个文本字段中提供所有数据,只会显示第一个。
你知道我怎么处理这种情况吗?
提前致谢!
答案 0 :(得分:1)
您正在寻找wtforms.fields.FieldList
字段附件:
class RoleForm(BaseForm):
name = fields.FieldList(fields.TextField(_('Name')), min_entries=3)
答案 1 :(得分:0)
您需要做的是创建这样的HTML input
元素,例如:
<input name="row-{{ loop.index0 }}" type="checkbox">
它将呈现如下输入:
<input name="row-0" type="checkbox">
<input name="row-1" type="checkbox">
在循环内部或类似的东西。然后,您将能够检索表单内容:
class ListForm(Form):
row = FieldList(fields.TextField('Row'))