繁体   English   中英

如何在我的 Django 项目之外拥有一个模板文件夹

[英]How can I have a template folder outside my Django project

我正在开发一个开源 Django 应用程序并为其创建了一些设计。 现在,客户想要使用自己的受版权保护的设计。 阅读 Django 文档后,我创建了一个单独的私有 GIT 存储库,我想将其用于新设计。 通过在设置中添加 2 个项目,我几乎可以正常工作; 在文件夹“funder_custom_templates”中查找模板的额外条目和在同一位置查找静态文件的额外条目。 这是我配置 TEMPLATES 和 STATICFILES_DIR 的方式:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(PROJECT_DIR, '..', '..', 'funder_custom_templates'),
            os.path.join(PROJECT_DIR, 'templates'),
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'fundraiser.context_processors.cart',
            ],
        },
    },
]
STATICFILES_DIRS = [
    os.path.join(PROJECT_DIR, '..', '..', 'funder_custom_templates','static'),
    os.path.join(PROJECT_DIR, 'static'),
]

当我按预期创建 funder_customer_templates/base.html 和所有静态文件时,这适用于覆盖位于 PROJECT_DIR/templates/base.html 中的基本设计。 但我也想覆盖应用程序特定的模板文件,如 blog/templates/blog/blog_index_page.html

我尝试将这些文件放在funder_custom_templates 的根目录中,并尝试模仿funder_custom_templates 中的应用程序文件夹结构,但这不会加载特定于应用程序的模板。 有没有办法解决这个问题?

示例项目文件,具有文件夹结构,位于: https : //github.com/acidjunk/funder/tree/develop/

由于您使用app_directories.Loader类来加载模板(通过设置'APP_DIRS': True, ),那么对于特定于应用程序的模板,Django 将遍历您的INSTALLED_APPS设置以寻找特定的模板文件。 这里重要的是它按顺序执行。

因此,如果您想覆盖blog/templates/blog/blog_index_page.html那么您将需要在blog之前的应用程序中有一个custom_blog/templates/blog/blog_index_page.html

我建议将所有自定义静态资源包装在它们自己的 django 应用程序和 python 包中。 通过这种方式,您可以简单地从其私有存储库安装该软件包,并将其添加到已安装应用程序列表中,以覆盖任何静态内容和模板。

有关模板加载的更多详细信息,请参阅 Django 的文档: https : //docs.djangoproject.com/en/1.9/ref/templates/api/#django.template.loaders.app_directories.Loader

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM