0

我收到图像的 404 错误。

https://example.herokuapp.com/images/IMG_2060.JPG 404 (Not Found)

这是我的目录树

directory1
    |
    |-- manage.py
    |
    |-- build/
    |     |
    |     |--static/
    |     .
    |     .
    |
    |-- static/
    .     |
    .     |--images/
    .     .
    .     .

我想查看的图像位于 directory1/static/images/ 中。

环境

INSTALLED_APPS = [
    'whitenoise.runserver_nostatic',
     ...
]

MIDDLEWARE = [
    'whitenoise.middleware.WhiteNoiseMiddleware',
    ....
]


STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'build/static')
]

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

MEDIA_URL = '/images/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/images')

白噪声版本为 5.2.0。我将此应用程序部署到heroku。一切正常,除了图像。我错过了什么吗?

先感谢您!:)

4

1 回答 1

0

Django 的静态文件处理可能有点混乱。

STATIC_ROOT应该是一个空目录,Django 会将您的静态文件复制到该目录准备服务。这是collectstatic由 Heroku 自动运行的命令完成的。

您希望它从中复制文件目录应列在STATICFILES_DIRS.

因此,如果您像这样更改设置,它应该可以工作:

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'build/static'),
    os.path.join(BASE_DIR, 'static'),
]

STATIC_ROOT = os.path.join(BASE_DIR, 'static_root')
于 2020-12-07T09:35:51.470 回答