使用Django在Heroku部署中上传文件

Nif*_*led 0 django heroku django-deployment

所以我终于能够设置我正在研究的本地+ prod测试项目.

# wsgi.py 
from dj_static import Cling, MediaCling

application = Cling(MediaCling(get_wsgi_application()))
application = DjangoWhiteNoise(application)
Run Code Online (Sandbox Code Playgroud)

我使用whitenoise(没有任何问题)和媒体(文件上传)使用dj_static和Postgres为local + prod 设置静态文件.一切都工作正常...静态文件,文件上传.

但是在Heroku dynos重新启动后,我丢失了所有文件上传.我的问题是,---由于我是从Django应用程序而不是像S3那样提供媒体文件,所以dyno重新启动也会消除这一切吗?

PS:我知道我可以用AWS等做到这一点,但我只是想知道这是否是我丢失所有上传的原因.

nik*_*k_m 6

由于我是从Django应用程序而不是像S3那样提供媒体文件,所以dyno重新启动了所有这些吗?

是!.那就对了.根据Heroku文档:

每个dyno都有自己的短暂文件系统,并带有最近部署的代码的全新副本.

看,这个答案和这个答案.

结论:对于媒体文件(上传的文件),您必须使用一些外部服务(如S3或其他).whitenoise仅适用于静态文件.请参阅此处,为什么whitenoise不适合提供用户上传的(媒体)文件.