首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在运行Django collectstatic时忽略目录?

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

Stack Overflow用户
提问于 2011-11-25 21:31:38
回答 3查看 13.6K关注 0票数 34

我正在用Django 1.3,Ubuntu 11.10,gunicorn和Nginx运行一个小的测试项目,所有的东西都在一个虚拟环境中,现在我正在运行collectstatic来将我的静态文件放到Nginx所在的目录中。

为简单起见,假设我的静态目录类似于/home/user/static,而我的项目位于/home/user/project

当我转到/home/user/project时,我运行:

代码语言:javascript
复制
python manage.py collectstatic --noinput

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

我查看了文档中的集合体,有一个忽略( -i )参数,它接受一个glob风格的参数,所以我尝试了命令的不同变体,因为我不确定忽略模式是指我的/home/user/static还是原始的应用程序目录。

下面是一些不起作用的例子:

代码语言:javascript
复制
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的符号链接,静态会注意到并跳过再次复制这些文件,但无论如何,我想让--ignore选项正常工作。

我遗漏了什么?

谢谢你的帮助!

EN

回答 3

Stack Overflow用户

发布于 2011-12-09 14:22:35

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

代码语言:javascript
复制
python manage.py collectstatic --noinput -i admin

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

票数 40
EN

Stack Overflow用户

发布于 2019-01-11 04:26:53

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

代码语言:javascript
复制
manage.py collectstatic --ignore /vendor/*.js

然后就可以工作了。

票数 11
EN

Stack Overflow用户

发布于 2021-11-17 00:46:18

我有一个这样的文件夹结构:

代码语言:javascript
复制
my_project
└─content
| └─static
|   └─content
|     ├─css
|     ├─dist
|     ├─js
|     ├─scss

我想排除scss文件夹和其中的所有文件。

我在下面记录了我尝试过的所有事情。

以下是不支持的命令:

代码语言:javascript
复制
"python manage.py collectstatic --no-input --ignore /content/static/content/scss"
"python manage.py collectstatic --no-input --ignore /content/static/content/scss/"
"python manage.py collectstatic --no-input --ignore /content/static/content/scss/*"
"python manage.py collectstatic --no-input --ignore content/static/content/scss"
"python manage.py collectstatic --no-input --ignore content/static/content/scss/"
"python manage.py collectstatic --no-input --ignore content/static/content/scss/*"
"python manage.py collectstatic --no-input --ignore /content/scss"
"python manage.py collectstatic --no-input --ignore /content/scss/"
"python manage.py collectstatic --no-input --ignore /content/scss/*"
"python manage.py collectstatic --no-input --ignore content/scss"
"python manage.py collectstatic --no-input --ignore content/scss/"

以下是执行工作的命令:

代码语言:javascript
复制
"python manage.py collectstatic --no-input --ignore content/scss/*" <- best
"python manage.py collectstatic --no-input --ignore content/scss*"

理解这一点的绝对关键是阅读这篇文章十遍:

您需要从静态目录中查找路径,而不是项目根目录。

Source

总结如下:

  • 您不需要在路径开头加上前导正斜杠
  • 该路径是相对于静态目录的
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8269883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档