Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python FileAllowed不显示错误消息_Python_Flask_Flask Wtforms_Wtforms - Fatal编程技术网

Python FileAllowed不显示错误消息

Python FileAllowed不显示错误消息,python,flask,flask-wtforms,wtforms,Python,Flask,Flask Wtforms,Wtforms,我用的是WT表格。我正在对文件上传进行验证,并将其限制为jpg、png和pdf格式。但是,如果输入错误,则不会显示错误消息 我遵循了这个教程 photo=FileField('photo',验证器=[ FileRequired(), 允许文件(['png'、'pdf'、'jpg']、“格式错误!”) ]) 默认情况下,如果验证失败,flask wtf不会显示任何错误消息 可以捕获并显示每个字段或所有字段的错误消息 下面是一个在flask wtf中进行验证的文件上载示例 文件夹结构: . ├──

我用的是WT表格。我正在对文件上传进行验证,并将其限制为jpg、png和pdf格式。但是,如果输入错误,则不会显示错误消息

我遵循了这个教程

photo=FileField('photo',验证器=[
FileRequired(),
允许文件(['png'、'pdf'、'jpg']、“格式错误!”)
])

默认情况下,如果验证失败,
flask wtf
不会显示任何错误消息

可以捕获并显示每个字段或所有字段的错误消息

下面是一个在
flask wtf
中进行验证的文件上载示例

文件夹结构:

.
├── app.py
├── forms.py
├── requirements.txt
└── templates
    └── upload.html
app.py

from flask import Flask, render_template
from forms import FileUploadForm

app = Flask(__name__)
app.secret_key = 'learnflask'

@app.route('/upload', methods=['GET', 'POST'])
def upload():
    form = FileUploadForm()
    if form.validate_on_submit():
        f = form.photo_or_pdf_file.data
        return f.filename
    return render_template('upload.html', form=form)
from flask_wtf import FlaskForm
from wtforms import SubmitField
from flask_wtf.file import FileField, FileAllowed, FileRequired


class FileUploadForm(FlaskForm):
    photo_or_pdf_file = FileField('photo', validators=[
        FileRequired(),
        FileAllowed(['png', 'pdf', 'jpg'], "wrong format!")
    ])
    submit = SubmitField('Upload')
forms.py

from flask import Flask, render_template
from forms import FileUploadForm

app = Flask(__name__)
app.secret_key = 'learnflask'

@app.route('/upload', methods=['GET', 'POST'])
def upload():
    form = FileUploadForm()
    if form.validate_on_submit():
        f = form.photo_or_pdf_file.data
        return f.filename
    return render_template('upload.html', form=form)
from flask_wtf import FlaskForm
from wtforms import SubmitField
from flask_wtf.file import FileField, FileAllowed, FileRequired


class FileUploadForm(FlaskForm):
    photo_or_pdf_file = FileField('photo', validators=[
        FileRequired(),
        FileAllowed(['png', 'pdf', 'jpg'], "wrong format!")
    ])
    submit = SubmitField('Upload')
模板/upload.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
    <style>
        .validation_error{
        color: red;
    }
    </style>
</head>
<body>
<form method="POST" enctype="multipart/form-data">
    {{ form.csrf_token }}
    {{ form.photo_or_pdf_file.label }}<br>{{ form.photo_or_pdf_file }}
    <span class="validation_error">{{ ', '.join(form.photo_or_pdf_file.errors) }}</span><br>
    {{ form.submit }}<br>
</form>
</body>
</html>
运行应用程序:

export FLASK_APP=app.py
export FLASK_ENV=development
flask run
参考资料:


您是否正在检查
表单。提交时验证()
?阅读本文档