#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')