无法在Flask-wtf中多次添加entry FieldList
我有一个用flask-wtf做的表单,用来上传图片,而且这个表单的文件字段可以有多个。
我的表单是:
class ComposeForm(Form):
attachment = FieldList(FileField(_('file')), _('attachment'))
add_upload = SubmitField(_('Add upload'))
我的视图是:
if form.validate_on_submit():
if form.add_upload.data:
form.attachment.append_entry()
return render_template('mailbox/compose.html', form=form)
else:
form.attachment.append_entry()
我的模板是:
<form method="POST" enctype="multipart/form-data" action=".">
{% for field in form %}
{{field}}
{% endfor %}
</div>
当我在表单中使用 enctype="multipart/form-data"
时,append_entry
这个功能就不管用了。它只会再添加一个字段。
我再次点击 add_upload
,但是刷新后我又只看到一个字段(而不是两个)。
我该怎么解决这个问题呢?我觉得没有错误,因为enctype让wtform忘记了我需要添加多少个字段。
1 个回答
4
你调用的 append_entry
方法缺少数据。
根据文档:
append_entry([data])
这个方法可以创建一个新的条目,并且可以选择性地提供默认数据。
不过,通过这种方式添加的条目不会接收到表单数据,只能接收对象数据。
如果你想获取表单中提交的数据,可以试试使用 pop_entry
。或者至少可以进行一些调试,看看 form.attachment.entries
的内容是什么样的。里面有值吗?当你遍历这些值时会发生什么?