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

问题描述 投票:31回答:2

我正在使用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选项正常工作。

我错过了什么?

谢谢您的帮助!

python django deployment
2个回答
34
投票

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

python manage.py collectstatic --noinput -i admin

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


3
投票

例如,Django 2.2 release最终解决了使用路径匹配指定忽略参数这一长期存在的问题

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

应该工作。

© www.soinside.com 2019 - 2024. All rights reserved.