{{ }} ·
{% %} ·
Vererbung ·
Filter ·
Makros ·
url_for
Jinja2 ist die Template-Engine von Flask. Sie ermöglicht die dynamische Generierung von HTML-Seiten mit Variablen, Kontrollstrukturen, Vererbung, Filtern und Makros – für saubere und wartbare Templates.
Jinja2-Syntax verwendet geschweifte Klammern für die Ausgabe von Variablen ({{ }}), Prozentzeichen für Logik ({% %}) und Kommentare ({# #}).
{{ variable | default('Standard') }}, um einen Fallback-Wert für fehlende Variablen zu setzen.
Template-Vererbung ermöglicht die Wiederverwendung von Layouts. Ein Basis-Template definiert Blöcke ({% block %}), die in Kind-Templates überschrieben werden können.
{{ super() }} in einem Block, um den Inhalt des Eltern-Blocks zu übernehmen und zu erweitern – ideal für Footer oder Header-Ergänzungen.
Filter transformieren Werte vor der Ausgabe – sie werden mit dem Pipe-Symbol (|) angewendet und können verkettet werden.
| Filter | Beschreibung | Beispiel |
|---|---|---|
| default | Fallback-Wert bei fehlender Variable | {{ name | default('Gast') }} |
| safe | HTML nicht escapen (Vorsicht!) | {{ html | safe }} |
| length | Länge einer Sequenz | {{ items | length }} |
| upper / lower | Groß-/Kleinschreibung | {{ text | upper }} |
| capitalize | Erster Buchstabe groß | {{ 'hallo' | capitalize }} |
| title | Jedes Wort groß | {{ 'hallo welt' | title }} |
| truncate | Text kürzen | {{ text | truncate(50) }} |
| join | Liste zu String verbinden | {{ list | join(', ') }} |
| replace | Text ersetzen | {{ text | replace('a', 'b') }} |
| round | Zahl runden | {{ 3.14159 | round(2) }} |
| first / last | Erstes/letztes Element | {{ items | first }} |
| safe nur bei Inhalten, die Sie vertrauen – andernfalls besteht die Gefahr von XSS-Angriffen. Für Datumsformatierungen können Sie eigene Filter mit @app.template_filter() erstellen.
Makros sind wiederverwendbare Template-Fragmente ähnlich wie Funktionen. Include bindet den Inhalt einer anderen Template-Datei ein.
include eignet sich für wiederkehrende Code-Blöcke wie Navigation oder Footer, die keine Parameter benötigen.
Helfer-Funktionen erleichtern die Arbeit mit URLs, Variablen und Flashed Messages.
url_for() ist die empfohlene Methode für Links in Flask-Templates – bei Änderungen der Routen müssen Sie keine Links manuell anpassen.
Fortgeschrittene Konzepte erweitern Jinja2 um benutzerdefinierte Filter, globale Variablen und Tests – für mehr Flexibilität und Wiederverwendbarkeit.
{{ }}
{% block %}
| filter
macro
url_for
custom
{{ user.name | upper }} ·
{% if logged_in %} ... {% endif %} ·
{% block content %}{% endblock %}