所以我终于能够设置我正在研究的本地+产品测试项目。
# 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等方式做到这一点,但我只是想知道这是否是我失去所有上传的原因。答案 0 :(得分:6)
由于我是从Django应用程序而不是S3那样提供媒体文件,所以dyno是否重新擦除了所有这些?
是!那是对的。根据{{3}}:
每个dyno都有自己的短暂文件系统,并附有最近部署的代码的新副本。
另请参阅Heroku docs回答和this回答。
结论:对于媒体文件(已上传的文件),您必须使用某些外部服务(如S3或其他内容)。 whitenoise
仅适用于静态文件。请参阅this为什么whitenoise不适合提供用户上传的(媒体)文件。