如何使用WTForms、Jinja和;python
我用Jinja定义了一个HTML模板,其中我定义了三(3)个同名的文本字段。然后在后端使用get_all方法收集所有值 然后为了添加表单验证等,我添加了WTForms库。然后我将表单定义为:如何使用WTForms、Jinja和;python,python,jinja2,wtforms,Python,Jinja2,Wtforms,我用Jinja定义了一个HTML模板,其中我定义了三(3)个同名的文本字段。然后在后端使用get_all方法收集所有值 然后为了添加表单验证等,我添加了WTForms库。然后我将表单定义为: class RoleForm(BaseForm): name = fields.TextField(_('Name')) 在HTML页面中,我对这个元素进行了三(3)次渲染 现在,当我提交表单并且验证失败时,我使用表单作为输入重新呈现模板。但是每个元素都有我输入的值,所有文本字段都有第一个文本字段
class RoleForm(BaseForm):
name = fields.TextField(_('Name'))
在HTML页面中,我对这个元素进行了三(3)次渲染
现在,当我提交表单并且验证失败时,我使用表单作为输入重新呈现模板。但是每个元素都有我输入的值,所有文本字段都有第一个文本字段的值
此外,如果验证没有问题,我将使用form.name.data,它不会提供三个文本字段中的所有数据,而只提供第一个文本字段
你知道我如何处理这种情况吗
提前谢谢 您正在寻找现场机柜:
class RoleForm(BaseForm):
name = fields.FieldList(fields.TextField(_('Name')), min_entries=3)
您需要做的是创建HTML
input
元素,例如:
<input name="row-{{ loop.index0 }}" type="checkbox">
实际上,这不会生成同名的输入字段。它将生成3个名称为:name-0、name-1、name2的条目。@Tarantula-当我阅读OP时,所需的行为是保留每个文本框的状态,而不是有三个同名的文本框:-)
<input name="row-0" type="checkbox">
<input name="row-1" type="checkbox">
class ListForm(Form):
row = FieldList(fields.TextField('Row'))