Flask-WTF FileField 在 validate_on_submit 上失败
Flask-WTF FileField fails on validate_on_submit
我希望能够使用 Flask-WTF FileField 在 Flask 上上传 CSV 文件,但无法通过 validate_on_submit
。
这是我的看法。
@main.route('/upload', methods=['GET', 'POST'])
def upload_products():
form = UploadForm()
print (request.method)
print (form.validate_on_submit())
print (form.csv.data)
if form.validate_on_submit():
print ('valid on submit')
f = form.csv.data
print (f)
return redirect(url_for('upload_products'))
return render_template('upload.html', form=form)
这是我的表格
class UploadForm(FlaskForm):
csv = FileField("")
这是我的 html
文件。
<div class="container">
<h1 class="my-4">Hello! Upload files here!</h1>
</div>
<div class="container" >
<form action="{{ url_for('main.upload_products') }}" method="post" enctype="multipart/form-data">
{{form.csv}}
<input type="submit" value="Submit">
</form>
</div>
在 validate_on_submit
,我总是收到 False
值。
我还打印了 form.csv.data
,这是我得到的结果:
<FileStorage: '12347.csv' ('application/vnd.ms-excel')>
为什么它在 validate_on_submit
上失败了?我错过了什么吗?
通过在我的模板中添加 {{form.hidden_tag()}}
解决了这个问题。
<div class="container">
<h1 class="my-4">Hello! Upload files here!</h1>
</div>
<div class="container" >
<form action="{{ url_for('main.upload_products') }}" method="post" enctype="multipart/form-data">
{{form.hidden_tag()}}
{{form.csv}}
<input type="submit" value="Submit">
</form>
</div>
我希望能够使用 Flask-WTF FileField 在 Flask 上上传 CSV 文件,但无法通过 validate_on_submit
。
这是我的看法。
@main.route('/upload', methods=['GET', 'POST'])
def upload_products():
form = UploadForm()
print (request.method)
print (form.validate_on_submit())
print (form.csv.data)
if form.validate_on_submit():
print ('valid on submit')
f = form.csv.data
print (f)
return redirect(url_for('upload_products'))
return render_template('upload.html', form=form)
这是我的表格
class UploadForm(FlaskForm):
csv = FileField("")
这是我的 html
文件。
<div class="container">
<h1 class="my-4">Hello! Upload files here!</h1>
</div>
<div class="container" >
<form action="{{ url_for('main.upload_products') }}" method="post" enctype="multipart/form-data">
{{form.csv}}
<input type="submit" value="Submit">
</form>
</div>
在 validate_on_submit
,我总是收到 False
值。
我还打印了 form.csv.data
,这是我得到的结果:
<FileStorage: '12347.csv' ('application/vnd.ms-excel')>
为什么它在 validate_on_submit
上失败了?我错过了什么吗?
通过在我的模板中添加 {{form.hidden_tag()}}
解决了这个问题。
<div class="container">
<h1 class="my-4">Hello! Upload files here!</h1>
</div>
<div class="container" >
<form action="{{ url_for('main.upload_products') }}" method="post" enctype="multipart/form-data">
{{form.hidden_tag()}}
{{form.csv}}
<input type="submit" value="Submit">
</form>
</div>