我正在学习flask_admin。我要添加一个FileUpload。我可以显示上传文件按钮,但是,当我单击“保存”按钮时,它将显示AttributeError。
builtins.AttributeError
AttributeError: 'SpooledTemporaryFile' object has no attribute 'translate'
这是我的代码:
class Movie(db.Model):
__tablename__="movie"
id=db.Column(db.Integer,primary_key=True)
title=db.Column(db.String(255),unique=True)
url = db.Column(db.String(255), unique=True)
info=db.Column(db.Text)
logo=db.Column(db.String(255),unique=True)
star=db.Column(db.SmallInteger)
playnum=db.Column(db.BigInteger)
commentnum=db.Column(db.BigInteger)
area=db.Column(db.String(255))
release_time=db.Column(db.String(100))
length=db.Column(db.String(100))
addtime = db.Column(db.DateTime, index=True, default=datetime.now)
class MovieView(ModelView):
form_overrides = {
'url': form.FileUploadField
}
import os
import os.path as op
file_path = op.join(op.dirname(__file__), 'files')
try:
os.mkdir(file_path)
except OSError:
pass
form_args = {
'url': {
'label': u'movie',
'base_path': file_path,
'allow_overwrite': False
}
}
admin = Admin(app,name=u'后台管理系统')
admin.add_view(MovieView(Movie, db.session))
答案 0 :(得分:0)
尝试固定Werkzeug==0.12.2
。
我认为我们也遇到了同样的问题,尽管我还没有足够的时间来解决这个问题,以了解这是Python的问题,Werkzeug的问题还是我们的环境问题。我没有时间去深入研究。需要回滚到旧的固定版本并继续前进。
我上次查找的内容的简短摘要是Werkzeug最近更改为使用SpooledTemporaryFile:
但是SpooledTemporaryFile似乎在Python错误跟踪器上记录了一些已知的缺陷
以及此处的SO:
更新: 看到我们不是唯一遇到此问题的人之后,我决定继续向Werkzeug(https://github.com/pallets/werkzeug/issues/1344)提出问题