Как игнорировать каталоги при запуске Django collectstatic? - PullRequest
31 голосов
/ 25 ноября 2011

Я запускаю небольшой тестовый проект с 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

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

Я проверил документацию на collecstatic и есть параметр -i (--ignore), который принимает параметр в стиле globпоэтому я попробовал разные варианты команды, так как не уверен, относится ли шаблон игнорирования к моему / 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 работала как надо.

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

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

Ответы [ 2 ]

34 голосов
/ 09 декабря 2011

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

python manage.py collectstatic --noinput -i admin

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

3 голосов
/ 10 января 2019

В версии Django 2.2 наконец-то решена очень давняя проблема указания параметров игнорирования при сопоставлении пути, например

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

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

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