| Jinja |
| ===== |
| |
| Jinja is a fast, expressive, extensible templating engine. Special |
| placeholders in the template allow writing code similar to Python |
| syntax. Then the template is passed data to render the final document. |
| |
| It includes: |
| |
| - Template inheritance and inclusion. |
| - Define and import macros within templates. |
| - HTML templates can use autoescaping to prevent XSS from untrusted |
| user input. |
| - A sandboxed environment can safely render untrusted templates. |
| - AsyncIO support for generating templates and calling async |
| functions. |
| - I18N support with Babel. |
| - Templates are compiled to optimized Python code just-in-time and |
| cached, or can be compiled ahead-of-time. |
| - Exceptions point to the correct line in templates to make debugging |
| easier. |
| - Extensible filters, tests, functions, and even syntax. |
| |
| Jinja's philosophy is that while application logic belongs in Python if |
| possible, it shouldn't make the template designer's job difficult by |
| restricting functionality too much. |
| |
| |
| Installing |
| ---------- |
| |
| Install and update using `pip`_: |
| |
| .. code-block:: text |
| |
| $ pip install -U Jinja2 |
| |
| .. _pip: https://pip.pypa.io/en/stable/quickstart/ |
| |
| |
| In A Nutshell |
| ------------- |
| |
| .. code-block:: jinja |
| |
| {% extends "base.html" %} |
| {% block title %}Members{% endblock %} |
| {% block content %} |
| <ul> |
| {% for user in users %} |
| <li><a href="{{ user.url }}">{{ user.username }}</a></li> |
| {% endfor %} |
| </ul> |
| {% endblock %} |
| |
| |
| Links |
| ----- |
| |
| - Website: https://palletsprojects.com/p/jinja/ |
| - Documentation: https://jinja.palletsprojects.com/ |
| - Releases: https://pypi.org/project/Jinja2/ |
| - Code: https://github.com/pallets/jinja |
| - Issue tracker: https://github.com/pallets/jinja/issues |
| - Test status: https://dev.azure.com/pallets/jinja/_build |
| - Official chat: https://discord.gg/t6rrQZH |