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