我正在Heroku上部署我的django项目,但网站上的图片无法加载。似乎CSS文件正常工作。我跑的时候:
python manage.py collectstatic --dry-run --noinput
和
heroku run python manage.py collectstatic --noinput
一切正常,我可以看到应该使用collectstatic
命令收集应该在网站上显示的图像。
同样重要的是,当我将图像添加到我的数据库时,重新加载的网站已经失效server error (500)
我认为我的settings.py
或urls.py
中存在一些错误,但我无法识别它。
Settings.py: https://github.com/dominik791/Cardom_initial_Heroku/blob/master/cardom_project/settings.py
Urls.py: https://github.com/dominik791/Cardom_initial_Heroku/blob/master/cardom_project/urls.py
Local_settings.py:
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
DEBUG = True
wsgi.py: https://github.com/dominik791/Cardom_initial_Heroku/blob/master/cardom_project/wsgi.py
有什么想法吗?
答案 0 :(得分:2)
静态文件和媒体文件完全不同。静态文件与您的应用程序一起上传,与其一起存储,并使用collectstatic收集。但是媒体文件是由用户上传的,不可能存储在Heroku的服务器上;毕竟,Heroku dynos是短命的,当它们死亡时,存储在它们上面的文件就会丢失。这对于使用git的静态文件很好,但对用户上传的媒体文件显然没有好处。
这就是为什么你需要把它们存放在更中心的地方;亚马逊S3是通常的地方。 This question总结了这样做的方法。