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 |safe verwendet.
  • Sandbox: Der SandboxedEnvironment beschrä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.