LINUX.ORG.RU

Django и статика

 


0

1

ЛОР, поясни, какова роль MEDIA_ROOT и STATIC_ROOT. да, я знаю, что статические файлы вроде css и js надо хранить в STATIC_ROOT, который должен быть где-то за пределами проекта и нужно настроить север на выдачу этой статики. в MEDIA_ROOT загружается контент, например, из ImageField. по идее, MEDIA_ROOT нужно тоже держать за пределами проекта. а как быть, если нужно держать стили внутри проекта, чтобы они были в репозитории? да и команда collectstatic собирает всё из MEDIA_ROOT и копирует в STATIC_ROOT. но тогда будет дублирование одного и того же контента, что плохо. как правильно организовать свой проект, если нужно чтобы часть статики была в репозитории (свои стили и js-файлы), но при этом загружаемый контент от клиента не попадал в репу?

Перемещено post-factum из development


но при этом загружаемый контент от клиента не попадал в репу

В gitignore эту директорию. Разумеется не забыть добавить файл .gitkeep и закоммитить этот файл в репозиторий.

resurtm ★★★
()

да и команда collectstatic собирает всё из MEDIA_ROOT

collectstatic собирает из директории static каждого приложения, и копирует все в STATIC_ROOT. так что, никакого дублирования нет. То есть, у тебя получается иерархия вроде

djangoprojectroot
   \- apps
        \ appname
           \ static
                \ css
                \ js
           \ templates
                \ template.html
           \ models.py
           \ views.py
provaton ★★★★★
()
Ответ на: комментарий от resurtm

но ведь MEDIA_ROOT должен храниться не в папке проекта. да и если я выполню collectstatic на хостинге, то весь контент, который был загружен пользователями в MEDIA_ROOT попадёт в STATIC_ROOT.

memnek
() автор топика
Ответ на: комментарий от provaton

а если нужно хранить статику не по приложениям, а для всего проекта сразу в одном месте? а для проекта статика лежит вне PROJECT_ROOT

memnek
() автор топика
Ответ на: комментарий от provaton

просто мне не понятно, как в проекте хранить стили и js для всего сайта? просто для каждого приложения дублировать статику, которая нужна для всего проекта - глупо. а хранить в одном из приложений - нелогично, ведь у меня нет «главного» приложения.

memnek
() автор топика
Ответ на: комментарий от memnek

Я ж говорю, если хочешь - заводи отдельную директорию, добавляй ее в STATICFILES_DIRS в settings.py и все будет как ты хочешь. Джанго оставляет достаточно много свободы в плане организации иерархии кода.

provaton ★★★★★
()
Ответ на: комментарий от memnek

но ведь MEDIA_ROOT должен храниться не в папке проекта. да и если я выполню collectstatic на хостинге, то весь контент, который был загружен пользователями в MEDIA_ROOT попадёт в STATIC_ROOT.

С чего бы? collectstatic проходит по всем директориям из STATICFILES_DIRS и по директориям приложений, а потом кладёт найденное в STATIC_ROOT. MEDIA_ROOT никто не трогает.

risenshnobel ★★★
()
Ответ на: комментарий от risenshnobel

хм, у меня оттуда брал. хотя, быть может, я что-то нахимичил тогда. тогда понятно, как всё организовать.

memnek
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.