Подтвердить что ты не робот

Как игнорировать каталоги при запуске Django collectstatic?

Я запускаю небольшой тестовый проект с Django 1.3, Ubuntu 11.10, gunicorn и Nginx, все в virtualenv, и теперь я запускаю collectstatic, чтобы получить статические файлы в каталог, из которого работает Nginx.

Для простоты скажем, что мой статический каталог - это что-то вроде /home/user/static, а мой проект - в /home/user/project

Когда я иду в /home/user/project, я запускаю:

python manage.py collectstatic --noinput

и он корректно копирует статические файлы из всех приложений, которые я установил. К сожалению, это также копирует файлы из admin Django, и я хотел бы пропустить этот.

Я проверил документацию для colcstatic, и есть параметр -i (--ignore), который принимает параметр стиля glob, поэтому я пробовал различные варианты команды, так как я не уверен, что шаблон игнорирования относится к my/home/user/static или в каталог исходного приложения.

Вот несколько примеров, которые не работали:

python manage.py collectstatic --noinput -i /home/user/static/admin
python manage.py collectstatic --noinput -i /home/user/static/admin/*
python manage.py collectstatic --noinput -i /home/user/static/a*
python manage.py collectstatic --noinput -i /home/alexis/.virtualenvs/django13/*
python manage.py collectstatic --noinput -i /home/user/.virtualenvs/django13/lib/python2.7/site-packages/django/contrib/admin*

Я обнаружил, что если я создаю символическую ссылку из /home/user/static/admin в/home/user/.virtualenvs/django13/lib/python2.7/site-packages/django/contrib/admin/media collectstatic заметят и пропустят копирование этих файлов снова, но в любом случае я хотел бы сделать параметр --ignore таким, каким он должен.

Что мне не хватает?

Спасибо за помощь!

4b9b3361

Ответ 1

Не записывайте полный путь к каталогам. Например, использование:

python manage.py collectstatic --noinput -i admin

Эта команда не будет копировать каталог admin/в путь STATIC_ROOT.

Ответ 2

В выпуске Django 2.2 (ожидается в апреле 2019 года) наконец решена очень давняя проблема, например, указание параметров игнорирования с сопоставлением пути.

manage.py collectstatic --ignore /vendor/*.js

должен тогда работать.