jinja2-registry
Project description
jinja2_registry
jinja2_registry is a convenience library for managing multiple template namespaces with Jinja2
Example
The following Python code sets up a jinja2.Environment and three distinct jinja2.FileSystemLoader objects under a jinja2.PrefixLoader. It then renders a HTML page based on title.html that includes several other files.
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)
The result is rendered from 4 HTML templates, which are located in different directories. In this example, all of the templates are read from the filesystem; however, users may make use of register_loader to attach any standard Jinja2 loader to the registry.
Result
<!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>
The HTML templates are organized into the following structure. Layouts are separated from partials and content. In a production deployment, layouts would likely be stored separately from pages (e.g., in a library), and partials might be automatically generated.
File structure:
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/partials/title.html
{% extends "pages/content.html" %}
{% block title %}new_title{% endblock %}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for jinja2_registry-0.1.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 692657083ef51c94bd5152eec3f0f1693780b60fa7b9221c4a44aa14ff11756d |
|
MD5 | ded4c1c170932c26052367c641c49ab6 |
|
BLAKE2b-256 | 827178f77b5f14fd4ab2057b3fd3e526b17c071f1256f4f5afdbb19461c103e1 |