Django的collectstati中自定义忽略模式列表的示例

2024-10-02 12:35:20 发布

您现在位置:Python中文网/ 问答频道 /正文

和这里的其他问题一样,我希望在运行collectstatic时忽略我的.scss文件。但是因为我使用的是Heroku,它自动运行collectstatic,所以我宁愿自定义collectstatic的忽略模式列表,也不愿更改管理命令。你知道吗

Django 2.2提供了a way to do this,如下所述:

The default ignored pattern list, ['CVS', '.', '~'], can be customized in a more persistent way than providing the --ignore command option at each collectstatic invocation. Provide a custom AppConfig class, override the ignore_patterns attribute of this class and replace 'django.contrib.staticfiles' with that class path in your INSTALLED_APPS setting:

from django.contrib.staticfiles.apps import StaticFilesConfig

class MyStaticFilesConfig(StaticFilesConfig):
    ignore_patterns = [...]  # your custom ignore list

我的问题是,这是我的第一个Django项目,我不太知道如何提供一个定制的AppConfig类(深入研究AppConfig文档并没有帮助)。我的意思是,我应该将这个类添加到一个全新的应用程序中还是使用现有的应用程序?这个类将在apps.py文件中吗?如果是的话,最好的应用程序应该是什么?所以我想问是否有人能为我提供一个最佳实践的例子。你知道吗

作为参考,现在我的应用程序结构是这样的(所有模板、资产和应用程序都分组在各自的文件夹中,而不是在每个应用程序中):

-- project_name
  -- assets
    -- app1
  -- templates
  -- project_name
    -- app1
    -- app2
    -- __init__.py
    -- settings.py
    -- urls.py
    -- wsgi.py

更新: 正如Nico所建议的,我在project_name.project_name中创建了一个名为static的应用程序,只有一个初始.py文件和应用程序.py. apps.py与doc示例完全相同:

from django.contrib.staticfiles.apps import StaticFilesConfig

class StaticConfig(StaticFilesConfig):
    name = 'static'
    ignore_patterns = ['CVS', '.*', '*~', '*.scss'] 

但是,我在从INSTALLED_APPS替换'django.contrib.staticfiles'时遇到了错误。你知道吗

  • 将其替换为'project_name.static'会使终端无法理解collectstatic管理命令。你知道吗
  • 'django.contrib.staticfiles'(即。 不删除(后面的)使其忽略覆盖并收集 .scss文件。你知道吗
  • 替换'project_name.static.apps.StaticConfig'会引发 Cannot import 'static'.错误

更新2: 在我回滚了应用程序创建之后,我再次尝试了is,但是现在,我没有将startapp与文件路径一起使用,而是在项目根上创建了应用程序,对其进行了测试,然后手动将其移动到我的应用程序文件夹中,并再次进行了测试。出于某种原因我不太明白,这次我用'django.contrib.staticfiles'替换了'project_name.static',现在它成功了。你知道吗


Tags: apps文件djangonamepyproject应用程序static
1条回答
网友
1楼 · 发布于 2024-10-02 12:35:20

您可以将它添加到其他应用程序中,甚至只在项目名称的根目录中创建一个名为static的文件,并直接在settings.INSTALLED_APPS中引用该文件中的类,但提供AppConfigs的推荐方法是在应用程序.py应用程序包中的文件。你知道吗

如果您没有可以放置这个AppConfig的应用程序,我认为最好的做法是在project下创建一个包_name.project\u名称称为static,只有一个init.py文件和一个应用程序.py文件。你知道吗

在这个文件中,您可以按照您描述的方式创建AppConfig。 您的文件结构将如下所示:

  project_name
    assets
      app1
    templates
    project_name
      app1
      app2
      static
         __init__.py
         apps.py
      __init__.py
      settings.py
      urls.py
      wsgi.py

相关问题 更多 >

    热门问题