Ответ 1
Не записывайте полный путь к каталогам. Например, использование:
python manage.py collectstatic --noinput -i admin
Эта команда не будет копировать каталог admin/в путь STATIC_ROOT.
Я запускаю небольшой тестовый проект с 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 таким, каким он должен.
Что мне не хватает?
Спасибо за помощь!
Не записывайте полный путь к каталогам. Например, использование:
python manage.py collectstatic --noinput -i admin
Эта команда не будет копировать каталог admin/в путь STATIC_ROOT.
В выпуске Django 2.2 (ожидается в апреле 2019 года) наконец решена очень давняя проблема, например, указание параметров игнорирования с сопоставлением пути.
manage.py collectstatic --ignore /vendor/*.js
должен тогда работать.