图像不在heroku上提供,css文件正常工作

时间:2015-09-28 19:49:54

标签: django image heroku deployment django-staticfiles

我正在Heroku上部署我的django项目,但网站上的图片无法加载。似乎CSS文件正常工作。我跑的时候:

python manage.py collectstatic --dry-run --noinput

heroku run python manage.py collectstatic --noinput

一切正常,我可以看到应该使用collectstatic命令收集应该在网站上显示的图像。

同样重要的是,当我将图像添加到我的数据库时,重新加载的网站已经失效server error (500)

我认为我的settings.pyurls.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

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

静态文件和媒体文件完全不同。静态文件与您的应用程序一起上传,与其一起存储,并使用collectstatic收集。但是媒体文件是由用户上传的,不可能存储在Heroku的服务器上;毕竟,Heroku dynos是短命的,当它们死亡时,存储在它们上面的文件就会丢失。这对于使用git的静态文件很好,但对用户上传的媒体文件显然没有好处。

这就是为什么你需要把它们存放在更中心的地方;亚马逊S3是通常的地方。 This question总结了这样做的方法。