2011-11-25 34 views
26

我正在使用Django 1.3,Ubuntu 11.10,gunicorn和Nginx运行一个小测试项目,所有内容都在virtualenv中,现在我运行collectstatic将我的静态文件放入Nginx服务的目录中。如何在运行Django collectstatic时忽略目录?

为了简单起见,让我们说我的静态目录是一样的东西/家庭/用户/静态和我的项目是在/ home/user中/项目

当我去到/ home /用户/项目,我运行:

​​

它正确地复制了我安装的所有应用程序中的静态文件。不幸的是,这也从Django的管理员复制文件,我想跳过那一个。

我检查了collecstatic的文档,并且有一个采用glob风格参数的-i(--ignore)参数,所以我尝试了命令的不同变体,因为我不确定忽略模式是指到我的/ home/user/static或原始应用程序目录。

下面一些例子,didn't工作:

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 /用户/静态/管理员的符号链接/home/user/.virtualenvs/django13/lib /python2.7/site-packages/django/contrib/admin/media collectstatic会注意到并跳过复制这些文件,但无论如何,我想让--ignore选项按照它应该的方式工作。

我错过了什么?

感谢您的帮助!

+0

我有同样的问题,你有没有设法取得进展? – Hanpan

回答

27

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

python manage.py collectstatic --noinput -i admin 

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

+0

假设我们必须忽略某个类型的文件,那么下面的工作将会如下工作 python manage.py collectstatic --noinput -i * .styl 我想忽略的文件的扩展名是.styl? – Sachin

+5

是的。示例: python manage.py collectstatic --noinput -i * .sass – tatlar

+1

如何添加多个忽略?例如,在路径*和*任何'* .scss'文件中忽略任何'admin'? –