【问题标题】:How can I create repetitive form elements in a DRY way with Flask-WTForms?如何使用 Flask-WTForms 以 DRY 方式创建重复的表单元素?
【发布时间】:2016-06-14 01:35:30
【问题描述】:

我有一个 WTForms 表单,我希望用户能够在其中上传最多 10 张图片,并为图片提供标题和字幕。目前我声明了所有 10 组字段,但这似乎是多余的。有没有办法创建具有动态名称的表单字段,以便我可以循环创建它们?

class MyForm(Form):
    image1 = FileField('Upload')
    image1_caption = StringField('Caption')
    image1_credit = StringField('Credit')
    image2 = FileField('Upload')
    image2_caption = StringField('Caption')
    image2_credit = StringField('Credit')
    # ...through 10 images...

【问题讨论】:

标签: python flask wtforms flask-wtforms


【解决方案1】:

您可以通过将FormFieldFieldList 组合来获得所需的内容:

class ImageForm(Form):
    image = FileField('Upload')
    caption = StringField('Caption')
    credit = StringField('Credit')

class MyForm(Form):
    images = FieldList(FormField(ImageForm), min_entries=10)

然后,您可以通过my_form_instance.images.entries 或通过迭代my_form_instance.images 来访问各个ImageForm 实例:

for image in my_form_instance.images:
    print(image.data['caption'], image.data['credit'])

【讨论】:

  • 这太完美了,谢谢!很高兴知道我需要的术语以及如何使用它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多