繁体   English   中英

如何使用WTForms,Jinja和Python管理多个具有相同名称的HTML元素

[英]How to manage multiple HTML elements with same name using WTForms, Jinja & Python

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

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

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

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

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

此外,如果可以通过验证,则我使用form.name.data,它不会为我提供来自三个文本字段的所有数据,而仅是第一个。

你知道我该如何处理吗?

提前致谢!

您正在寻找wtforms.fields.FieldList字段附件:

class RoleForm(BaseForm):
    name = fields.FieldList(fields.TextField(_('Name')), min_entries=3)

您需要做的就是创建这样的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'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM