跳转到主要内容

如果可用,则从站点标签加载模板

项目描述

为多站点设置提供定制的模板加载器。

https://travis-ci.org/maykinmedia/django-label-loaders.svg?branch=master https://codecov.io/github/maykinmedia/django-label-loaders/coverage.svg?branch=master https://coveralls.io/repos/maykinmedia/django-label-loaders/badge.svg?branch=master&service=github https://img.shields.io/pypi/v/django-label-templates.svg

此工具适用于使用 django.contrib.sites 的用户,适用于多站点场景,其中不同站点可以有不同的模板,而不仅仅是不同的样式。

自定义模板加载器将尝试查找当前活动站点的模板,并在找不到时回退到通用模板。

安装

使用pip安装

pip install django-label-templates

配置

已安装的应用程序

请确保 django.contrib.sites 在您的 INSTALLED_APPS 中。

指定模板加载器

您还需要在设置中启用加载器,类似于Django的缓存模板加载器。加载器接受一个可迭代的加载器列表(列表或元组),用于查找模板。示例 - 以及最常用的 - 设置

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        # APP_DIRS must be False if you specify the loaders yourself
        'APP_DIRS': False,
        'DIRS': [
            os.path.join(PROJECT_DIR, 'templates'),
        ],
        'OPTIONS': {
            'loaders': [
                ('label_templates.loaders.Loader', [
                    'django.template.loaders.filesystem.Loader',
                    'django.template.loaders.app_directories.Loader',
                ]),
            ],
        },
    },
]

如果您愿意,此模板加载器也可以包装在其他加载器中,例如 django.template.loaders.cached.Loader

配置站点标签

最后一步需要额外的一个自定义设置:SITELABELS

# the import is safe and does NOT depend on django.conf.settings
from label_templates.sites import SiteLabels, SiteChoice

class SITELABELS(SiteLabels):
    site = SiteChoice('example.com', site_id=1)
    site2 = SiteChoice('example2.com', site_id=2)

此设置用于查找模板的标签前缀。ID为1的网站将解析为子文件夹site/,因此要加载模板example.html,加载器将首先尝试查找site/example.html,如果失败,则尝试直接加载example.html

对于ID为2的网站,使用前缀site2

限制

由于{% extends %}标签使用相同的加载器配置,因此您不能让特定标签的模板从同名的一般模板继承。

一种解决方案如下

templates/
├── mylabel/
|   └── base.html  # extends _base.html and overrides stuff
├── _base.html
└── base.html  # extends _base.html, overrides nothing

支持的版本

此库针对Django 1.8和1.9进行了测试。对于Django版本,相应的Python版本也适用。请查阅tox.ini以获取最新的构建矩阵。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

django-label-templates-1.0.3.tar.gz (5.8 kB 查看哈希值)

上传时间

构建分布

django_label_templates-1.0.3-py2.py3-none-any.whl (7.4 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面