AttributeError:“ SpooledTemporaryFile”对象没有属性“ translate”

时间:2018-08-15 11:56:52

标签: python file-upload flask-admin

我正在学习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))

1 个答案:

答案 0 :(得分:0)

尝试固定Werkzeug==0.12.2

我认为我们也遇到了同样的问题,尽管我还没有足够的时间来解决这个问题,以了解这是Python的问题,Werkzeug的问题还是我们的环境问题。我没有时间去深入研究。需要回滚到旧的固定版本并继续前进。

我上次查找的内容的简短摘要是Werkzeug最近更改为使用SpooledTemporaryFile:

但是SpooledTemporaryFile似乎在Python错误跟踪器上记录了一些已知的缺陷

以及此处的SO:

更新: 看到我们不是唯一遇到此问题的人之后,我决定继续向Werkzeug(https://github.com/pallets/werkzeug/issues/1344)提出问题