Templates met Jinja2
Render dynamische HTML
Templates met Jinja2 is een gratis Python Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Python Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Python Academy bevat in totaal 4 lessen.
Waarom sjablonen?
HTML retourneren vanuit Python-tekenreeksen wordt al snel rommelig. Sjablonen houden je HTML in afzonderlijke bestanden en vullen tijdens het renderen de gegevens in. Flask gebruikt de 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')De map templates
Flask zoekt sjablonen in een map met de naam templates/ naast je app. Bestanden eindigen meestal op .html.
# project/
# app.py
# templates/
# index.html
print('Templates live in templates/')render_template
render_template('index.html') laadt een sjabloon en retourneert de gerenderde HTML als antwoord.
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
print('home renders index.html')Gegevens doorgeven
Geef variabelen door als benoemde argumenten. Het sjabloon kan ze vervolgens weergeven.
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')Variabelen uitvoeren
In het sjabloon drukt {{ name }} een variabele af. De dubbele accolades zijn de expressiesyntaxis van Jinja2.
# index.html
# <h1>Hello, {{ name }}!</h1>
print('Double braces output a value')If-instructies
Besturingsinstructies van Jinja2 gebruiken {% %}. Een if-blok toont inhoud afhankelijk van een voorwaarde.
# {% if user %}
# <p>Welcome back!</p>
# {% else %}
# <p>Please log in.</p>
# {% endif %}
print('{% if %} branches the markup')For-lussen
Loop met {% for item in items %} over een lijst om herhaalde opmaak te renderen, zoals een lijst met producten.
# <ul>
# {% for item in items %}
# <li>{{ item }}</li>
# {% endfor %}
# </ul>
print('{% for %} repeats markup per item')Filters
Filters transformeren een waarde met een pipe: {{ name|upper }} zet de waarde om naar hoofdletters. Ingebouwde filters zijn onder andere length, default en title.
# {{ name|upper }} -> ALICE
# {{ items|length }} -> count
# {{ bio|default('N/A') }}
print('Filters transform values with |')Overerving van sjablonen
Een basissjabloon definieert de paginastructuur met tijdelijke aanduidingen van {% block %}. Kindersjablonen breiden dit uit met {% extends %} en vullen de blokken in.
# base.html
# <body>{% block content %}{% endblock %}</body>
#
# page.html
# {% extends 'base.html' %}
# {% block content %}<p>Hi</p>{% endblock %}
print('extends + block share a layout')Automatisch escapen
Jinja2 escapest HTML in variabelen automatisch en beschermt zo tegen cross-site scripting. Een waarde zoals <script> wordt als tekst weergegeven en niet uitgevoerd.
# If name = '<b>x</b>', {{ name }} renders the literal text
# Auto-escaping is on by default for safety
print('Auto-escaping prevents XSS')Koppelen met url_for
Binnen sjablonen kun je nog steeds url_for aanroepen, vaak voor statische bestanden: {{ url_for('static', filename='style.css') }}.
# <link rel='stylesheet'
# href="{{ url_for('static', filename='style.css') }}">
print('url_for works inside templates too')Korte toets
Toets je kennis van Jinja2.
Samenvatting
Je hebt geleerd hoe je sjablonen maakt met Jinja2.
render_template()rendert bestanden uittemplates/{{ }}voert waarden uit;{% %}voertif/foruit- Filters zoals
|uppertransformeren waarden extends+blockmaken overerving van de lay-out mogelijk- Automatisch escapen beschermt tegen XSS
Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 76
- Lessen
- 320
Veelgestelde vragen
Is de les “Templates met Jinja2” gratis?
Ja — de volledige tekst van “Templates met Jinja2” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Python Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Python Academy bevat in totaal 4 lessen.
Wat leer ik in “Templates met Jinja2”?
Render dynamische HTML Je oefent met Python Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Python Academy te beginnen?
Ervaring vooraf is niet nodig. Python Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Templates met Jinja2”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Python Academy?
Ja. Elke les over Python Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Routes en views
- Templates met Jinja2
- Formulieren en requestgegevens
- Een REST-endpoint bouwen