@Your_House

Работа со STATIC_ROOT, STATICFILES_DIRS, MEDIA_ROOT, MEDIA_DIRS. Как работают и где следует размещать указанные в них директории?

Вот, спустя немалое количество времени, я прошёлся по всей оф. документации про статические файлы, посмотрел видео на ютубе по этой теме, и теперь начал понимать многое, ОДНАКО. Остались непонятки, связанные со STATIC_ROOT, STATICFILES_DIRS, MEDIA_ROOT, MEDIA_DIRS.

Объясните мне пожалуйста попроще где должны храниться директории, указанные в этих переменных. Вот есть, у меня, к примеру, сайт с несколькими приложениями. Где мне следует разместить папку "связанную со STATIC_ROOT", а где папку "связанную со STATICFILES_DIRS"?

Переменная STATIC_ROOT же может быть только одна, и указанная в ней директория тоже только одна? Просто в документации писалось, что папку "static" (связанную со STATIC_ROOT) следует создавать в директории ПРИЛОЖЕНИЯ, а не в корне проекта. Но ведь тогда будет же странно, если все файлы, связанные с кучей РАЗНЫХ приложений, будут храниться в директории ОДНОГО из них. Разве не логичнее будет создать эту папку static в директории ПРОЕКТА?

Блин, сложно сейчас полноценно сформулировать то, что именно мне не понятно и вызывает вопросы. Так что если что, дополню по ходу дела.
  • Вопрос задан
  • 1005 просмотров
Пригласить эксперта
Ответы на вопрос 1
@DollaR84
Общая статическая папка для проекта должна быть в корне проекта, а в приложениях свои папки static, но там есть один нюанс.
Сначала в файле settings.py надо задать следующее, в месте где указывается static параметры:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.normpath(os.path.join(BASE_DIR, 'staticfiles'))
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)


затем надо организовать такую структуру папок:
project/
    project/
        settings.py
        ...
    application1/
        static/
            application1/
                ... тут статические файлы для приложения 1
    application2/
        static/
            application2/
                ... тут статические файлы для приложения 2
    static/
        ...тут статические файлы для проекта
    manage.py
...

То есть, в корневой директории сразу размещаются статические файлы, а в каталогах приложений, в папке static надо создать папку с именем приложения и уже в ней размещать статические файлы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы