跳转到主要内容

jinja2-registry

项目描述

jinja2_registry

https://img.shields.io/travis/3ptscience/jinja2-registry.svg MIT License https://img.shields.io/pypi/v/jinja2-registry.svg https://img.shields.io/pypi/pyversions/jinja2-registry.svg

jinja2_registry 是一个用于管理多个 Jinja2 模板命名空间的便利库

示例

以下Python代码设置了一个 jinja2.Environment 和三个不同的 jinja2.FileSystemLoader 对象,这些对象位于一个 jinja2.PrefixLoader 之下。然后,它根据 title.html 渲染一个基于其他几个文件的HTML页面。

from jinja2_registry import Renderer, register_filesystem_loader

register_filesystem_loader('layouts', 'templates/layouts')
register_filesystem_loader('partials', 'templates/partials')
register_filesystem_loader('pages', 'templates/pages')

renderer = Renderer('pages/title.html')
html = renderer.render()
print(html)

结果是从4个位于不同目录的HTML模板渲染出来的。在这个例子中,所有模板都是从文件系统中读取的;然而,用户可以使用 register_loader 将任何标准Jinja2加载器附加到注册表中。

结果

<!DOCTYPE html>
<html>
  <head>
    <title>new_title</title>
  </head>
  <body>
    <ul>
      <li><a href="/content">Content page</a></li>
      <li><a href="/title">New title page</a></li>
    </ul>
    <div>
      <p>some_content</p>
    </div>
  </body>
</html>

HTML模板组织如下结构。布局与部分和内容分离。在生产部署中,布局可能存储在页面(例如,在库中)之外,部分可能自动生成。

文件结构:

templates/
├── layouts
│   └── base.html
├── pages
│   ├── content.html
│   └── title.html
└── partials
    └── nav.html

templates/layouts/base.html

<!DOCTYPE html>
<html>
  <head>
    <title>{% block title %}default_title{% endblock %}</title>
  </head>
  <body>
    {% include "partials/nav.html" %}
    <div>
      {% block content %}{% endblock %}
    </div>
  </body>
</html>

templates/partials/nav.html

<ul>
  <li><a href="/content">Content page</a></li>
  <li><a href="/title">New title page</a></li>
</ul>

templates/pages/content.html

{% extends "layouts/base.html" %}
{% block content %}
      <p>some_content</p>
{%- endblock %}

templates/pages/title.html

{% extends "pages/content.html" %}
{% block title %}new_title{% endblock %}

项目详情


下载文件

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

源分布

jinja2-registry-0.1.1.tar.gz (5.4 kB 查看哈希值)

上传时间

由以下支持