如何使用WTForms,Jinja& amp ;;管理多个具有相同名称的HTML元素。蟒蛇

时间:2012-11-01 15:46:30

标签: python jinja2 wtforms

我已经使用Jinja定义了一个HTML模板,我在其中定义了三个具有相同名称的文本字段。然后在后端使用get_all方法我收集了所有的值。

然后为了添加表单验证等,我添加了WTForms库。然后我将表格定义为:

class RoleForm(BaseForm):
    name = fields.TextField(_('Name'))

在HTML页面中,我将此元素渲染了三(3)次。

现在,当我提交表单并且验证失败时,我使用表单作为输入重新呈现模板。但是相反,每个元素都具有我输入的值,所有文本字段都具有第一个文本字段的值。

此外,如果验证没问题,我使用的是form.name.data,它不会从三个文本字段中提供所有数据,只会显示第一个。

你知道我怎么处理这种情况吗?

提前致谢!

2 个答案:

答案 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'))