Skip to main content

jinja2-registry

Project description

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 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

jinja2-registry-0.0.6.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

jinja2_registry-0.0.6-py2.py3-none-any.whl (7.9 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file jinja2-registry-0.0.6.tar.gz.

File metadata

File hashes

Hashes for jinja2-registry-0.0.6.tar.gz
Algorithm Hash digest
SHA256 bcf037013d80223ef5a79b3a48a01634cbb2f554468891415f0fc03919e20e87
MD5 0f44759a11548e9178f4613bf3bb7d5a
BLAKE2b-256 8d4f833a5182d66765e8e1b40030c780359a76e3b4d41bf8e7e7dbc9828900d8

See more details on using hashes here.

File details

Details for the file jinja2_registry-0.0.6-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for jinja2_registry-0.0.6-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 51253e56ac1d198c4ed30ff513c26eb9c8ee70cf7c3599caa659ebbb70aa3655
MD5 80dba3f4c31f2be7be483bc2e4682b9e
BLAKE2b-256 8bdb417c0cb2759de178cb1ccf0a7662667a6d20527217e2762643e9ee01ab56

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page