Зачем использовать Django collectstatic вместо того, чтобы просто обслуживать файлы непосредственно из вашего статического каталога?

В Django Docs:

Развертывание django.contrib.staticfiles обеспечивает удобство команда управления для сбора статических файлов в одном каталоге, поэтому вы можете легко их обслуживать.

Установите параметр STATIC_ROOT в каталог, из которого вы хотели бы обслуживать эти файлы, например:

STATIC_ROOT = "/var/www/example.com/static/" 

Запустите команду управления коллекцией:

$ python manage.py collectstatic

Это скопирует все файлы из вашего статические папки в каталог STATIC_ROOT.

Используйте веб-сервер по вашему выбору для обслуживания файлов. Развертывание статических файлы покрывают некоторые общие стратегии развертывания для статических файлов.

Какова цель копирования файлов, почему бы просто не обслуживать их из каталога, в котором они живут в приложении?

Ответы

Ответ 1

Почему бы просто не обслуживать ваш каталог static? Вы можете использовать несколько приложений, и некоторые из ваших приложений могут не находиться под вашим контролем. До того, как существовало приложение staticfiles, вам пришлось либо вручную скопировать статические файлы для всех приложений в общий каталог, загрузить их в ваш CDN, либо связать их с корнем документа вашего веб-сервера.

Приложение staticfiles установило соглашение: поместите статические файлы для каждого приложения в каталог static и дайте Django выполнить эту работу за вас.

Ответ 2

STATIC_ROOT может находиться на другой машине, чем приложение, поэтому копирование ваших статических файлов в статический корень означает, что вы можете обслуживать ваши статические файлы с другого сервера (CDN FTW!), который вы не сможете использовать делать, если файлы, которые находятся только в соответствующих каталогах приложений.