Зачем нужно предоставлять STATIC_ ROOT? - PullRequest
1 голос
/ 02 апреля 2020

Может кто-нибудь объяснить мне необходимость предоставления STATIC_ ROOT в django проекте? Кажется, все работает нормально, если я просто объявляю STATICFILES_DIRS, а не STATIC_ ROOT.

Ответы [ 2 ]

2 голосов
/ 02 апреля 2020

STATIC_ROOT требуется только в производственной среде, поскольку сервер разработки Django runserver обеспечивает обслуживание файлов stati c непосредственно из каталогов stati c.

STATIC_ROOT Абсолютный путь к каталогу, где python manage.py collectstatic будет собирать файлы c для развертывания.

Пример: STATIC_ROOT="/var/www/example.com/static/"

Теперь команда python manage.py collectstatic скопирует все файлы stati c (ie в папке stati c в ваших приложениях, stati c файлы по всем путям) в каталог /var/www/example.com/static/. теперь вам нужно обслуживать этот каталог только на apache или nginx .. et c.

Примечание: вы часто видите примеры, где STATIC_ROOT имеет значение os.path.join(BASE_DIR, 'static'). Это плохая практика, поскольку она создает папку stati c в вашем хранилище исходного кода. Всегда устанавливайте для него путь вне папки вашего проекта, например, /var/www/example.com/static/, когда ваш проект находится в /var/www/example.com/src/.

0 голосов
/ 02 апреля 2020

Когда вы измените DEBUG в settings.py на False на своем производственном сервере, если вы не используете STATIC_ ROOT, файлы на странице не будут отображаться. И да, вы должны сделать collectstatic, как было написано в предыдущем ответе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...