图片未在 heroku 上提供,css 文件正常工作

Images are not served on heroku, css files work properly

我正处于在 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

有什么想法吗?

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

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