使用wtforms动态添加输入字段

穆森

我不太确定如何处理此问题。我希望我能到达那里。

例如,我在一个页面上有一张充满地址的表。这些计数是动态的(可以是5或10或任何其他计数)。我希望可以在一页上进行编辑。

我的方法是创建wtforms一个表单编辑一个地址,并乘以它在Jinja2的for loop和附加到HTML propertysnameidloop.index0从itereation,这样我就可以提取人工数据的每一行,并把它放回我的形式,当我想评估一下。

因此,此示例的表单为:

class AdressForm(Form):
    name = TextField()

所以现在我的模板方式如下所示(细分为一个输入字段):

{% for address in addresses %}
    {{ forms.render_field(addressform.name, id = "name_" ~ loop.index0, 
                          name = "name_" ~ loop.index0, value = address.name) }}
{% endfor %}

(forms.render_field只是一个宏,用于为wtforms的字段函数指定正确的类。就像它们在许多教程中一样)

因此这是行不通的,因为您无法将name参数手动传递给field函数,因为wtformsname从初始形式的变量名称创建了html-paramter。

因此,有一种方法可以在要呈现的表单名称中添加前缀或后缀。还是这是一个XY问题,我的方法是完全错误的。

还是我自己一个人做(我真的在努力避免这种情况)

肖恩·维埃拉(Sean Vieira)

WTForms有一个称为的元字段FormField,另一个名为的元字段FieldList将两者结合在一起,您将获得想要的:

class AddressEntryForm(FlaskForm):
    name = StringField()

class AddressesForm(FlaskForm):
    """A form for one or more addresses"""
    addresses = FieldList(FormField(AddressEntryForm), min_entries=1)

要在AddressesForm中创建条目,只需使用词典列表:

user_addresses = [{"name": "First Address"},
                  {"name": "Second Address"}]
form = AddressesForm(addresses=user_addresses)
return render_template("edit.html", form=form)

然后,在您的模板中,只需遍历子表单:

{% from 'your_form_template.jinja' import forms %}
{% for address_entry_form in form.addresses %}
    {{ address_entry_form.hidden_tag() }}
    {# Flask-WTF needs `hidden_tag()` so CSRF works for each form #}
    {{ forms.render_field(address_entry_form.name) }}
{% endfor %}

WTForms会自动为名称和ID正确加上前缀,因此,当您将数据发布回去时,您将能够获取form.addresses.data和获取包含更新数据的词典列表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

向WTForms动态添加字段并返回UnboundField

来自分类Dev

向WTForms动态添加字段并返回UnboundField

来自分类Dev

使用WTForms的动态选择字段未更新

来自分类Dev

动态添加表单输入字段

来自分类Dev

使用Angular动态添加输入字段并执行模糊验证

来自分类Dev

使用查询根据单选按钮动态添加/删除输入字段

来自分类Dev

如何使用jQuery动态添加/删除文件类型输入字段?

来自分类Dev

如何使用输入字段动态添加和删除多个<tr>

来自分类Dev

如何使用 Json 对象填充动态添加的输入字段

来自分类Dev

Wtforms:添加具有多重继承的动态字段

来自分类Dev

jQuery的动态添加李与输入字段

来自分类Dev

动态添加输入字段的键盘功能

来自分类Dev

React:动态添加输入字段以形成表单

来自分类Dev

根据用户选择动态添加输入字段

来自分类Dev

添加文件类型的动态输入字段,并预览

来自分类Dev

ReactJS动态添加多个输入字段

来自分类Dev

如何添加输入字段并动态选择?

来自分类Dev

动态添加输入字段值 jQuery

来自分类Dev

jQuery对照其他动态添加的输入字段验证动态添加的输入字段

来自分类Dev

jQuery对照其他动态添加的输入字段验证动态添加的输入字段

来自分类Dev

动态字段取决于WTForms的先前字段

来自分类Dev

使用Jquery Ajax在PHP中动态添加/删除多个输入字段

来自分类Dev

如何使用http请求中的数组将动态输入字段添加到角度形式

来自分类Dev

如何将列标题正确添加到 WTForms 动态选择字段列表中

来自分类Dev

动态使用json数据创建输入字段

来自分类Dev

使用php javascript动态计算输入字段

来自分类Dev

使用 PHP 的动态输入字段的错误消息

来自分类Dev

使用 __icontains 从输入字段动态过滤

来自分类Dev

如何从动态输入字段中添加数字?

Related 相关文章

  1. 1

    向WTForms动态添加字段并返回UnboundField

  2. 2

    向WTForms动态添加字段并返回UnboundField

  3. 3

    使用WTForms的动态选择字段未更新

  4. 4

    动态添加表单输入字段

  5. 5

    使用Angular动态添加输入字段并执行模糊验证

  6. 6

    使用查询根据单选按钮动态添加/删除输入字段

  7. 7

    如何使用jQuery动态添加/删除文件类型输入字段?

  8. 8

    如何使用输入字段动态添加和删除多个<tr>

  9. 9

    如何使用 Json 对象填充动态添加的输入字段

  10. 10

    Wtforms:添加具有多重继承的动态字段

  11. 11

    jQuery的动态添加李与输入字段

  12. 12

    动态添加输入字段的键盘功能

  13. 13

    React:动态添加输入字段以形成表单

  14. 14

    根据用户选择动态添加输入字段

  15. 15

    添加文件类型的动态输入字段,并预览

  16. 16

    ReactJS动态添加多个输入字段

  17. 17

    如何添加输入字段并动态选择?

  18. 18

    动态添加输入字段值 jQuery

  19. 19

    jQuery对照其他动态添加的输入字段验证动态添加的输入字段

  20. 20

    jQuery对照其他动态添加的输入字段验证动态添加的输入字段

  21. 21

    动态字段取决于WTForms的先前字段

  22. 22

    使用Jquery Ajax在PHP中动态添加/删除多个输入字段

  23. 23

    如何使用http请求中的数组将动态输入字段添加到角度形式

  24. 24

    如何将列标题正确添加到 WTForms 动态选择字段列表中

  25. 25

    动态使用json数据创建输入字段

  26. 26

    使用php javascript动态计算输入字段

  27. 27

    使用 PHP 的动态输入字段的错误消息

  28. 28

    使用 __icontains 从输入字段动态过滤

  29. 29

    如何从动态输入字段中添加数字?

热门标签

归档