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

时间:2017-04-15 05:49:35

标签: django heroku django-deployment

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

# wsgi.py 
from dj_static import Cling, MediaCling

application = Cling(MediaCling(get_wsgi_application()))
application = DjangoWhiteNoise(application)

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

但是在Heroku dynos重新启动后,我丢失了所有文件上传。我的问题是,---因为我从Django应用程序而不是像S3那样提供媒体文件,所以dyno重新启动了所有这些吗?

PS:我知道我可以通过AWS等方式做到这一点,但我只是想知道这是否是我失去所有上传的原因。

1 个答案:

答案 0 :(得分:6)

  

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

是!那是对的。根据{{​​3}}:

  

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

另请参阅Heroku docs回答和this回答。

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