gpt4 book ai didi

Django静态文件: Any Way to Get More Fine-Grained Control?

转载 作者:行者123 更新时间:2023-12-02 13:16:50 24 4
gpt4 key购买 nike

Django 的静态文件功能允许您指定某些目录以“收集”到面向公众的文件夹中。这很好,但是有什么方法可以比仅仅拥有某些文件夹来获得更细粒度的控制呢?例如,是否有指定...

  • 包括特定文件
  • 排除特定文件
  • 排除特定子目录

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

这可能吗?

最佳答案

我编写了一个自定义 django-admin 命令来启用 COLLECT_STATIC_IGNORE 设置。

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

appname/
management/
__init__.py
commands/
__init__.py
_private.py
collectstatic.py

在collectstatic.py中放置:

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']

或者,更好的是,按照建议,使用 super :

class Command(Command):

def set_options(self, **options):
super(Command, self).set_options(**options)
self.ignore_patterns += settings.COLLECT_STATIC_IGNORE
self.ignore_patterns = list(set(self.ignore_patterns))

这会覆盖内置 collectstatic 命令中的 set_options 函数。

在settings.py中添加COLLECT_STATIC_IGNORE。此示例忽略 scss 文件和 admin 文件夹中的所有文件。

COLLECT_STATIC_IGNORE = ['*.scss', 'admin', ... ] 

然后:

python manage.py collectstatic

标志起作用,因此在向 COLLECT_STATIC_IGNORE 添加内容后,您可能需要使用 --clear 清除现有文件,然后再尝试复制或链接原始文件。

python manage.py collectstatic --clear

关于Django静态文件: Any Way to Get More Fine-Grained Control?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21835428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com