如何在运行Django collectstatic时忽略目录?

时间:2011-11-25 13:31:38

标签: python django deployment

我正在使用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的文档,并且有一个带有glob样式参数的-i(--ignore)参数,所以我尝试了不同的命令变体,因为我不确定忽略模式是否指的是我的/ home / user / static或原始app目录。

这里有一些不起作用的例子:

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 个答案:

答案 0 :(得分:34)

不要写目录的完整路径。例如用法:

python manage.py collectstatic --noinput -i admin

此命令不会将admin /目录复制到STATIC_ROOT路径。

答案 1 :(得分:2)

Django 2.2 release终于解决了长期存在的问题,例如,通过路径匹配指定忽略参数

<my-new-component></my-new-component>

然后应该工作。