flask_wtf.file中的FileField不是werkzeug.datastructures.FileStorage

时间:2019-04-16 11:14:51

标签: flask flask-wtforms

我正在处理具有图像上传字段的烧瓶表单,当我提交表单时,此data的{​​{1}}属性设置为FileField。根据烧瓶文件。

  

Flask-WTF提供的FileField与WTForms提供的不同   领域。它将检查文件是否为的非空实例   FileStorage,否则数据将为None。

所以我在代码中签入了这个None,并返回了isinstance(form.profile_picture, FileStorage)

下面是相关的代码片段

Forms.py

false

views.py

from flask_wtf import FlaskForm
from wtforms import PasswordField, StringField, SubmitField, TextAreaField
from wtforms.validators import DataRequired, Email, EqualTo, length
from flask_wtf.file import FileField, FileAllowed

class EditProfileForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])
    about_me = TextAreaField('About Me', validators=[DataRequired(),
                                                     length(min=10, max=1000)])
    profile_picture = FileField('Profile Picture', validators=[FileAllowed([
        'jpg', 'png'])])
    update = SubmitField('Update')

那么我在这里想念什么吗?我也遇到了这个问题Flask-WTF FileField does not set data attribute to an instance of Werkzeug FileStorage,但这不是我的问题,因为我没有使用任何数据初始化表单。

1 个答案:

答案 0 :(得分:0)

解决方案非常简单,我没有在模板文件的form中提到正确的编码类型。

这解决了我的问题。

<form method='POST' action='' enctype=multipart/form-data>