0

我用 Jinja 定义了一个 HTML 模板,在那里我定义了三 (3) 个同名的文本字段。然后在后端使用 get_all 方法收集所有值。

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

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

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

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

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

你知道我该如何处理这种情况吗?

提前致谢!

4

2 回答 2

1

您正在寻找wtforms.fields.FieldList现场外壳:

class RoleForm(BaseForm):
    name = fields.FieldList(fields.TextField(_('Name')), min_entries=3)
于 2012-11-02T22:29:00.507 回答
0

您需要做的是创建这样input的 HTML 元素,例如:

<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'))
于 2015-03-22T18:38:24.710 回答