Kon*_*sch 3 python flask wtforms flask-wtforms
我正在使用 WTForms。我正在对文件上传应用验证,并将其限制为仅 jpg、png 和 pdf 格式。但是,如果我输入不正确,则不会出现错误消息。
我遵循了本教程 https://flask-wtf.readthedocs.io/en/stable/form.html
photo = FileField('photo', validators=[
FileRequired(),
FileAllowed(['png', 'pdf', 'jpg'], "wrong format!")
])
Run Code Online (Sandbox Code Playgroud)
默认情况下,flask-wtf如果验证失败,不会显示任何错误消息。
可以捕获并显示每个单独字段或所有字段的错误消息。
\n\n下面是一个在 中进行文件上传和验证的示例flask-wtf。
文件夹结构:
\n\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 forms.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 requirements.txt\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 templates\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 upload.html\nRun Code Online (Sandbox Code Playgroud)\n\napp.py:
from flask import Flask, render_template\nfrom forms import FileUploadForm\n\napp = Flask(__name__)\napp.secret_key = \'learnflask\'\n\n@app.route(\'/upload\', methods=[\'GET\', \'POST\'])\ndef upload():\n form = FileUploadForm()\n if form.validate_on_submit():\n f = form.photo_or_pdf_file.data\n return f.filename\n return render_template(\'upload.html\', form=form)\nRun Code Online (Sandbox Code Playgroud)\n\nforms.py:
from flask_wtf import FlaskForm\nfrom wtforms import SubmitField\nfrom flask_wtf.file import FileField, FileAllowed, FileRequired\n\n\nclass FileUploadForm(FlaskForm):\n photo_or_pdf_file = FileField(\'photo\', validators=[\n FileRequired(),\n FileAllowed([\'png\', \'pdf\', \'jpg\'], "wrong format!")\n ])\n submit = SubmitField(\'Upload\')\nRun Code Online (Sandbox Code Playgroud)\n\ntemplates/upload.html:
<!DOCTYPE html>\n<html lang="en">\n<head>\n <meta charset="UTF-8">\n <title>login</title>\n <style>\n .validation_error{\n color: red;\n }\n </style>\n</head>\n<body>\n<form method="POST" enctype="multipart/form-data">\n {{ form.csrf_token }}\n {{ form.photo_or_pdf_file.label }}<br>{{ form.photo_or_pdf_file }}\n <span class="validation_error">{{ \', \'.join(form.photo_or_pdf_file.errors) }}</span><br>\n {{ form.submit }}<br>\n</form>\n</body>\n</html>\nRun Code Online (Sandbox Code Playgroud)\n\n输出:
\n\nrequirements.txt:
Click==7.0\nFlask==1.0.3\nFlask-WTF==0.14.2\nitsdangerous==1.1.0\nJinja2==2.10.1\nMarkupSafe==1.1.1\npkg-resources==0.0.0\nWerkzeug==0.15.4\nWTForms==2.2.1\nRun Code Online (Sandbox Code Playgroud)\n\n运行应用程序:
\n\nexport FLASK_APP=app.py\nexport FLASK_ENV=development\nflask run\nRun Code Online (Sandbox Code Playgroud)\n\n参考:
\n\n| 归档时间: |
|
| 查看次数: |
3426 次 |
| 最近记录: |