jinja2-registry
项目描述
jinja2_registry
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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0556bd95e6cd7dfee8e26e426d78409a7b7d4120b2cc3e7fea0bbc3f6717120e |
|
MD5 | 64fa039e016d2253fa158dbc57974e2e |
|
BLAKE2b-256 | a20cc216faa4027ebb8f355c3c4f951832ea55817f5cd2ac0ec6c1a7cc109806 |