Почему Django 4.0 может получить доступ к статическим файлам только через STATICFILES_DIRS, а не STATIC_ROOT
Когда я использую STATIC_ROOT:
STATIC_ROOT = BASE_DIR / 'static'
Django не может получить доступ к статическим файлам и всегда возвращает для них 404 ошибку.
Но когда я использую STATICFILES_DIRS:
STATICFILES_DIRS = [
BASE_DIR / "static",
]
Все работает хорошо. В чем проблема?
Я не понимаю, почему Django работает таким образом, я всегда думал, что STATIC_ROOT является правильным способом создания маршрута.
STATIC_ROOT
- это место, куда команда collectstatic
будет копировать все статические файлы.
Эта папка предназначена для использования в продакшене. Чтобы все статические файлы в вашем проекте (из ваших приложений, приложений сторонних разработчиков и т.д.) хранились в одной папке, и поэтому их было легко обслуживать в продакшене.
По умолчанию Django автоматически ищет статические файлы внутри каждого каталога приложения (это полезно при написании многократно используемых приложений). Настройка STATICFILES_DIRS
позволяет вам определить дополнительные места для поиска статических файлов.
Кроме того, папка STATIC_ROOT
и папка STATICFILES_DIRS
не должны иметь одинаковые значения.