从站点标签加载模板(如果可用)

django-label-templates的Python项目详细描述


用于多站点设置的自定义模板加载程序

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

这是为多站点案例的django.contrib.sites用户准备的 不同的站点可以有不同的模板,而不仅仅是不同的 造型

自定义模板加载程序将尝试为当前 活动站点,并返回到通用模板。

安装

使用pip安装:

pip install django-label-templates

配置

安装的应用程序

确保django.contrib.sitesINSTALLED_APPS

指定模板加载程序

您还需要在设置中启用加载程序,类似于django的 缓存的模板加载程序加载程序接受一个iterable(列表或元组) 加载程序来查找模板示例-可能是最常用的-设置:

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.settingsfromlabel_templates.sitesimportSiteLabels,SiteChoiceclassSITELABELS(SiteLabels):site=SiteChoice('example.com',site_id=1)site2=SiteChoice('example2.com',site_id=2)

此设置用于查找模板的标签前缀。现场 with ID=1将解析为子文件夹site/,以便加载模板 example.html,加载程序将尝试首先查找site/example.html,然后 否则,将尝试只加载example.html

对于带有ID=2的站点,使用前缀site2

注意

为了找到匹配的站点,加载程序尝试获取 SiteChoice基于django.contrib.sites.models.Site.name,带有 回退到domain。因此,对于SiteChoice的第一个参数,它是 输入Site.name值最安全

限制

由于{% 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测试的。对应的python Django版本的版本适用有关最新信息,请咨询tox.ini。 建立矩阵。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JNLP无法在浏览器中正确启动(与dtjava.js一起部署)   在执行下一个方法之前,java将等待线程执行结束   java如何将另一个LayoutManager应用于JComboBox?(多栏JComboBox尝试)   使用jPBC在java中实现双线性配对   java在使用@RequestMapping注释时获取请求的值(URL)   java如何控制流量   java如何获取IFC对象的绝对坐标?   java目标服务器无法使用htmlunit和tor响应异常   java需要帮助创建一个循环结构来运行我的程序   java有可能拥有一个Android APK并在应用程序中更改构建变体吗?   在Sphinx4中运行Ant的java   Java:从ArrayList获取子列表的有效方法   java如何使在循环内部创建的数组在循环外部工作?   apache poi通过java中的XSSF表从单元格读取日期值   安卓 java自己的SeqLock实现,避免spinlock会更好吗?   java的并发底层方法。util。同时发生的预定未来   java比较方法违反了它的一般约定,如何使它具有可传递性?   使用JAVA定向指定类的DB导出子类   一个方法中的java更改特定imageView