Белый шум, похоже, не помогает изображениям отображаться в heroku

#django #heroku #whitenoise

#django #heroku #whitenoise

Вопрос:

Я получил ошибку 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')
 

whitenoise vesrion — версия 5.2.0. Я развернул это приложение на heroku. все работает нормально, кроме изображений. Я что-то пропустил?

Заранее благодарю вас! 🙂

Ответ №1:

Статическая обработка файлов 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')