Templates mit Jinja2
Dynamisches HTML rendern
Templates mit Jinja2 ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum Templates?
HTML aus Python-Strings zurückzugeben wird schnell unübersichtlich. Templates halten Ihr HTML in separaten Dateien und fügen Daten beim Rendern ein. Flask verwendet die Engine Jinja2.
from flask import Flask, render_template
app = Flask(__name__)
# render_template loads a file from the templates/ folder
print('Jinja2 powers Flask templates')Der Ordner templates
Flask sucht Templates in einem Ordner namens templates/ neben Ihrer Anwendung. Die Dateien enden normalerweise auf .html.
# project/
# app.py
# templates/
# index.html
print('Templates live in templates/')render_template
render_template('index.html') lädt ein Template und gibt das gerenderte HTML als Antwort zurück.
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
print('home renders index.html')Daten übergeben
Übergeben Sie Variablen als Schlüsselwortargumente. Das Template kann sie anschließend anzeigen.
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html', name='Alice')
print('name=Alice is sent to the template')Variablen ausgeben
Im Template gibt {{ name }} eine Variable aus. Die doppelten geschweiften Klammern sind die Ausdruckssyntax von Jinja2.
# index.html
# <h1>Hello, {{ name }}!</h1>
print('Double braces output a value')If-Anweisungen
Jinja2-Steueranweisungen verwenden {% %}. Ein if-Block zeigt Inhalte abhängig von einer Bedingung an.
# {% if user %}
# <p>Welcome back!</p>
# {% else %}
# <p>Please log in.</p>
# {% endif %}
print('{% if %} branches the markup')For-Schleifen
Durchlaufen Sie eine Liste mit {% for item in items %}, um wiederholtes Markup zu rendern, beispielsweise eine Produktliste.
# <ul>
# {% for item in items %}
# <li>{{ item }}</li>
# {% endfor %}
# </ul>
print('{% for %} repeats markup per item')Filter
Filter transformieren einen Wert mit einem Pipe-Zeichen: {{ name|upper }} wandelt ihn in Großbuchstaben um. Zu den integrierten Filtern gehören length, default und title.
# {{ name|upper }} -> ALICE
# {{ items|length }} -> count
# {{ bio|default('N/A') }}
print('Filters transform values with |')Template-Vererbung
Ein Basis-Template definiert mit Platzhaltern wie {% block %} das Grundgerüst der Seite. Untergeordnete Templates erweitern es mit {% extends %} und füllen die Blöcke aus.
# base.html
# <body>{% block content %}{% endblock %}</body>
#
# page.html
# {% extends 'base.html' %}
# {% block content %}<p>Hi</p>{% endblock %}
print('extends + block share a layout')Automatisches Escaping
Jinja2 maskiert HTML in Variablen automatisch und schützt so vor Cross-Site-Scripting. Ein Wert wie <script> wird als Text angezeigt und nicht ausgeführt.
# If name = '<b>x</b>', {{ name }} renders the literal text
# Auto-escaping is on by default for safety
print('Auto-escaping prevents XSS')Verknüpfungen mit url_for
In Templates können Sie weiterhin url_for aufrufen, häufig für statische Dateien: {{ url_for('static', filename='style.css') }}.
# <link rel='stylesheet'
# href="{{ url_for('static', filename='style.css') }}">
print('url_for works inside templates too')Kurzer Test
Testen Sie Ihr Jinja2-Wissen.
Zusammenfassung
Sie haben das Templating mit Jinja2 gelernt.
render_template()rendert Dateien austemplates/{{ }}gibt Werte aus;{% %}führtif/foraus- Filter wie
|uppertransformieren Werte extends+blockermöglichen die Vererbung von Layouts- Automatisches Escaping schützt vor XSS
Häufig gestellte Fragen
Ist die Lektion „Templates mit Jinja2“ kostenlos?
Ja — der vollständige Text von „Templates mit Jinja2“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Templates mit Jinja2“?
Dynamisches HTML rendern Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Python Academy zu starten?
Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Templates mit Jinja2“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?
Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Routen und Views
- Templates mit Jinja2
- Formulare und Anfragedaten
- Einen REST-Endpunkt erstellen