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
File details
Details for the file jinja2-registry-0.0.6.tar.gz
.
File metadata
- Download URL: jinja2-registry-0.0.6.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bcf037013d80223ef5a79b3a48a01634cbb2f554468891415f0fc03919e20e87 |
|
MD5 | 0f44759a11548e9178f4613bf3bb7d5a |
|
BLAKE2b-256 | 8d4f833a5182d66765e8e1b40030c780359a76e3b4d41bf8e7e7dbc9828900d8 |
File details
Details for the file jinja2_registry-0.0.6-py2.py3-none-any.whl
.
File metadata
- Download URL: jinja2_registry-0.0.6-py2.py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51253e56ac1d198c4ed30ff513c26eb9c8ee70cf7c3599caa659ebbb70aa3655 |
|
MD5 | 80dba3f4c31f2be7be483bc2e4682b9e |
|
BLAKE2b-256 | 8bdb417c0cb2759de178cb1ccf0a7662667a6d20527217e2762643e9ee01ab56 |