亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Flask 在第一次驗證時不知道動態添加的輸入字段

Flask 在第一次驗證時不知道動態添加的輸入字段

精慕HU 2023-05-23 16:27:46
如果用戶單擊它,我將通過按鈕動態添加新的文件上傳字段。驗證僅在每隔一次嘗試時通過,這是因為 flask/wtforms 不知道新的動態創建的輸入字段。每當我單擊我的提交按鈕時,它只會對文件丟失的第一個字段發出警告。一旦我放入所有必需的文件并提交,它在第一次嘗試時就失敗了,但之后字段列表已被初始化為所需的大小,并且在我下次提交相同數量的文件時它可以工作。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>任何人碰巧知道如何讓它工作?另一個例子。如果我添加第二個上傳字段并提交,這就是我的函數打印的內容:[{'childvalue1': 1, 'childvalue2': <FileStorage: 'somefile.mp3' ('audio/mpeg')>}, {'childvalue1': 2, 'childvalue2': None}]如果我再做一次并提交,它就會起作用。有一些使用 append_entry() 的 python 函數的 ajax 調用的 hacky 解決方案,但我不相信這些并且不確定它們是否真的解決了問題。本質上,文件在第一次提交時總是沒有
查看完整描述

1 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

答案非常簡單,但對我來說并不那么明顯。

<input type='file' id=${secondTag } name=${secondTag }/>

需要像這樣,就像第一個子值一樣,我輸入它是因為它有一個默認值

<input type='file' id=${secondTag } name=${secondTag } value=""/>

現在 Flask 在提交/驗證時識別動態添加的文件。從一開始就應該很明顯,因為第一個值一直在傳輸,但是第二個值是“無”,兩者之間唯一的區別是“值”


查看完整回答
反對 回復 2023-05-23
  • 1 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號