模板加载程序允许您同时扩展和重写模板。

django-app-namespace-template-loader的Python项目详细描述


Build Status - develop branchCoverage of the code

提供一个模板加载器,允许您从 具体应用。这允许您同时扩展重写 同时模板。

默认的django加载程序要求您复制所需的整个模板 要重写,即使只想重写一个小块。

这就是这个包试图解决的问题。

示例:

如果要更改管理站点的标题,则 已创建此模板:

$ cat my-project/templates/admin/base_site.html
{% extends "admin/base.html" %}
{% load i18n %}

{% block title %}{{ title }} | My Project{% endblock %}

{% block branding %}
<h1 id="site-name">My Project</h1>
{% endblock %}

{% block nav-global %}{% endblock %}

使用命名空间扩展和重写版本:

$ cat my-project/templates/admin/base_site.html
{% extends "admin:admin/base_site.html" %}

{% block title %}{{ title }} - My Project{% endblock %}

{% block branding %}
<h1 id="site-name">My Project</h1>
{% endblock %}

注意,在此版本中,块nav-global不必 因为遗产而存在。

没有名称空间的较短版本:

$ cat my-project/templates/admin/base_site.html
{% extends ":admin/base_site.html" %}

{% block title %}{{ title }} - My Project{% endblock %}

{% block branding %}
<h1 id="site-name">My Project</h1>
{% endblock %}

如果不指定应用程序命名空间,则第一个匹配模板 将被使用。当多个应用程序提供相同的 但具有不同功能的模板。

多个空命名空间的示例:

$ cat my-project/application/templates/application/template.html
{% block content%}
<p>Application</p>
{% endblock content%}

$ cat my-project/application_extension/templates/application/template.html
{% extends ":application/template.html" %}
{% block content%}
{{ block.super }}
<p>Application extension</p>
{% endblock content%}

$ cat my-project/templates/application/template.html
{% extends ":application/template.html" %}
{% block content%}
{{ block.super }}
<p>Application project</p>
{% endblock content%}

将呈现:

<p>Application</p>
<p>Application extension</p>
<p>Application project</p>

安装

首先,使用 最喜欢的包管理器。示例:

$ pip install django-app-namespace-template-loader

安装后,将app_namespace.Loader添加到TEMPLATE_LOADERS 项目的设置。

TEMPLATE_LOADERS = [
  'app_namespace.Loader',
  ... # Other template loaders
]

django>;=1.8app_namespace.Loader应添加到 DjangoTemplates后端的options dict中的{tt6}$部分 相反。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'OPTIONS': {
            'loaders': [
                'app_namespace.Loader',
                'django.template.loaders.filesystem.Loader',
                'django.template.loaders.app_directories.Loader',
            ],
        },
    },
]

注意:对于django 1.8,app_namespace.Loader应该是列表中的第一个 装载机。

已知限制

app_namespace.Loader如果结合使用,则无法正常工作 使用django.template.loaders.cached.Loader,继承基于 空命名空间。

注释

最初基于:http://djangosnippets.org/snippets/1376/

要求:django>;=1.8

使用Python2.7、3.3、3.4进行测试。

如果要将此应用程序用于Django的早期版本,请使用 包的0.3.1版。

如果要将此应用程序与Python2.6一起使用,请使用 包裹。

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

推荐PyPI第三方库


热门话题
java自动在新部署的war文件中实例化一个类   java异常ORA00942:使用hibernate会话插入现有表时,表或视图不存在   java扩展DefaultTableCellRenderer,在GetTableCellRenderComponent中不创建新对象?   Java枚举中的序列化实例   基于Swing的Java游戏网格布局   JavaSpring:如何在@WebServiceRef中注入wsdlLocation   在Java中设置原语而不获取警告   java如何引用在不同类的main方法中声明的对象属性   java我试图将2个已排序的LinkedList合并到一个已排序的列表中,但得到的是NullPointerException?   循环Java 8:比较两个列表中的多个属性   java将文件列表从服务器发送到客户端的JPanel   自Java 9以来的注释处理器发现过程   RawDatagramSocket Dart在Java Android中的类似实现   java在web服务器中写入文件而不指定实际路径   java决定了二进制文件的环境和版本