Jinja (offiziell Jinja2) ist die bekannteste Template-Engine für Python. Sie wurde von Armin Ronacher entwickelt, von den Django-Templates inspiriert und ist die Standard-Engine des Flask-Frameworks. Ihr Motto: schnell, ausdrucksstark und erweiterbar — mit Sandbox-Modus für unsicheres Umfeld.
Syntax im Überblick
{{ variable }} <!-- Ausgabe -->
{% if x %} ... {% endif %} <!-- Logik -->
{% for i in liste %} ... {% endfor %} <!-- Schleife -->
{% extends 'base.html' %} <!-- Vererbung -->
{% block inhalt %} ... {% endblock %}
Erste Schritte
pip install jinja2
python -c "from jinja2 import Template; print(Template('Hallo {{ name }}').render(name='Hanse'))"
Praxis-Tipps
- Template-Vererbung:
{% extends %}und{% block %}erlauben Basis-Layouts, die Kind-Templates gezielt füllen. - Autoescaping: Jinja escaped Ausgaben standardmäßig in HTML-Kontexten — schützt vor XSS, solange man nicht gezielt
|safeverwendet. - Sandbox: Der
SandboxedEnvironmentbeschränkt den Zugriff auf Python-Interna, wenn Templates aus nicht vertrauenswürdigen Quellen kommen. - Flask: Flask bringt Jinja automatisch mit und nutzt es als einziges Template-System.
Verwandte Grundlagen: Python-Befehle sowie die Schwester-Engines EJS-Befehle und Twig-Befehle.