如果用戶單擊它,我將通過按鈕動態(tài)添加新的文件上傳字段。驗(yàn)證僅在每隔一次嘗試時(shí)通過,這是因?yàn)?flask/wtforms 不知道新的動態(tài)創(chuàng)建的輸入字段。每當(dāng)我單擊我的提交按鈕時(shí),它只會對文件丟失的第一個(gè)字段發(fā)出警告。一旦我放入所有必需的文件并提交,它在第一次嘗試時(shí)就失敗了,但之后字段列表已被初始化為所需的大小,并且在我下次提交相同數(shù)量的文件時(shí)它可以工作。forms.pyclass ChildForm(FlaskForm): class Meta: csrf = False childvalue1= IntegerField(default=1, validators=[DataRequired()]) childvalue2= FileField(validators=[FileRequired(),FileAllowed(['mp3'])])class ParentForm(FlaskForm): parentvalue1= FileField('PDF File', validators=[FileRequired(), FileAllowed(['pdf'])]) parentfieldlist= FieldList(FormField(ChildForm), min_entries=1) submit = SubmitField('Upload')html文件<form action="" method="post" enctype="multipart/form-data"> {{ form.hidden_tag() }} <!-- PDF Upload --> <div> <label class="label">{{ form.parentvalue1.label }}</label> {{ form.parentvalue1}} <br> </div> <!-- Audio Upload --> <br> <div> <label class="label">{{ form.parentfieldlist.label }}</label> <table id="audiotable"> {% for entry in form.parentfieldlist%} <tr> {% for subfield in entry %} <td>{{ subfield }}</td> {% endfor %} </tr> {% endfor %} </table> </div> <br> <button type='button' class="add_more">Add More Files</button> <br><br> <p> {{ form.submit(class='button is-link') }} </form>任何人碰巧知道如何讓它工作?另一個(gè)例子。如果我添加第二個(gè)上傳字段并提交,這就是我的函數(shù)打印的內(nèi)容:[{'childvalue1': 1, 'childvalue2': <FileStorage: 'somefile.mp3' ('audio/mpeg')>}, {'childvalue1': 2, 'childvalue2': None}]如果我再做一次并提交,它就會起作用。有一些使用 append_entry() 的 python 函數(shù)的 ajax 調(diào)用的 hacky 解決方案,但我不相信這些并且不確定它們是否真的解決了問題。本質(zhì)上,文件在第一次提交時(shí)總是沒有
1 回答

喵喵時(shí)光機(jī)
TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
答案非常簡單,但對我來說并不那么明顯。
<input type='file' id=${secondTag } name=${secondTag }/>
需要像這樣,就像第一個(gè)子值一樣,我輸入它是因?yàn)樗幸粋€(gè)默認(rèn)值
<input type='file' id=${secondTag } name=${secondTag } value=""/>
現(xiàn)在 Flask 在提交/驗(yàn)證時(shí)識別動態(tài)添加的文件。從一開始就應(yīng)該很明顯,因?yàn)榈谝粋€(gè)值一直在傳輸,但是第二個(gè)值是“無”,兩者之間唯一的區(qū)別是“值”
添加回答
舉報(bào)
0/150
提交
取消