Django静态文件:有没有办法获得更细粒度的控制?

Django静态文件:有没有办法获得更细粒度的控制?,django,Django,Django的静态文件特性允许您指定某些目录,以便“收集”到面向公共的文件夹中。这很好,但是有什么方法可以比只使用某些文件夹获得更细粒度的控制吗?例如,是否仍要指定 包括特定文件 排除特定文件 不包括特定子目录 例如,我想说“收集这个文件夹中的所有文件,除了这个文件和这个目录”。或者,如果我可以选择特定的文件,然后选择该目录的所有子目录(我不想要的子目录除外),我也可以完成同样的事情 有可能吗?我编写了一个自定义的django admin命令来启用收集\u静态\u忽略设置 首先在任何应用程序

Django的静态文件特性允许您指定某些目录,以便“收集”到面向公共的文件夹中。这很好,但是有什么方法可以比只使用某些文件夹获得更细粒度的控制吗?例如,是否仍要指定

  • 包括特定文件
  • 排除特定文件
  • 不包括特定子目录
例如,我想说“收集这个文件夹中的所有文件,除了这个文件和这个目录”。或者,如果我可以选择特定的文件,然后选择该目录的所有子目录(我不想要的子目录除外),我也可以完成同样的事情


有可能吗?

我编写了一个自定义的django admin命令来启用
收集\u静态\u忽略设置

首先在任何应用程序文件夹中创建以下结构:

appname/
    management/
        __init__.py
        commands/
            __init__.py
            _private.py
            collectstatic.py
在collectstatic.py put中:

from django.contrib.staticfiles.management.commands.collectstatic import Command
from django.conf import settings

class Command(Command):

    def set_options(self, **options):
        """
        Set instance variables based on an options dict
        """
        self.interactive = options['interactive']
        self.verbosity = int(options.get('verbosity', 1))
        self.symlink = options['link']
        self.clear = options['clear']
        self.dry_run = options['dry_run']
        ignore_patterns = options['ignore_patterns']
        if options['use_default_ignore_patterns']:
            ignore_patterns += ['CVS', '.*', '*~']
            ignore_patterns += settings.COLLECT_STATIC_IGNORE # Added.
        self.ignore_patterns = list(set(ignore_patterns))
        self.post_process = options['post_process']
或者,更好的是,如@CantucciHQ所建议的,使用:

这将覆盖反编译
collectstatic
命令中的
set\u options
功能

在settings.py中添加
COLLECT\u STATIC\u IGNORE
。 此示例忽略scss文件和管理文件夹中的所有文件

COLLECT_STATIC_IGNORE = ['*.scss', 'admin', ... ] 
然后:

标记起作用,因此在将某些内容添加到
收集\u静态\u忽略
后,您可能希望在尝试复制或链接原始文件之前使用
--clear
清除现有文件

python manage.py collectstatic --clear

一些例子是在感谢,这将工作。然而,我们的ops人员希望避免命令行标志,所以理想情况下,我正在寻找一种通过设置、类重写来实现这一点的方法。。。类似的东西。编写一个自定义管理命令来设置标志并调用原始命令怎么样?你仍然可以称之为收集静态。。。。或者,您可以编写一个自定义的静态文件查找器,它具有您想要的属性。这将更加灵活。我从来没做过,但看起来不难。如果你需要帮助,我可以试着帮你。看起来是个有趣的问题。django似乎也应该改进这一点——它目前硬连接到文件模式CVS、~、。默认情况下。这是我的第一个django管理命令,因此非常感谢您的反馈!干得好!一个建议——调用祖先的set_选项,然后执行自定义操作(设置ignore_模式)。e、 g.
super(命令,自我)。设置选项(**选项)
。这样,您就不必重复基本功能,并且在将来的版本中自动获得新功能。您可能需要更改命令类名b/c您正在覆盖祖先的名称。@CantucciHQ:我对super了解得不够,所以没有信心。你能看一下吗?不更名似乎效果不错。谢谢你的提示。
python manage.py collectstatic
python manage.py collectstatic --clear