Mallar med Jinja2
Rendera dynamisk HTML
Mallar med Jinja2 är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.
Varför mallar?
Det blir snabbt rörigt att returnera HTML från Python-strängar. Mallar håller HTML-koden i separata filer och fyller i data när sidan renderas. Flask använder motorn Jinja2.
from flask import Flask, render_template
app = Flask(__name__)
# render_template loads a file from the templates/ folder
print('Jinja2 powers Flask templates')Mappen templates
Flask letar efter mallar i en mapp som heter templates/ bredvid appen. Filerna slutar vanligtvis på .html.
# project/
# app.py
# templates/
# index.html
print('Templates live in templates/')render_template
render_template('index.html') läser in en mall och returnerar den renderade HTML-koden som svar.
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
print('home renders index.html')Skicka data
Skicka variabler som namngivna argument. Mallen kan sedan visa dem.
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')Skriva ut variabler
I mallen skriver {{ name }} ut en variabel. De dubbla klamrarna är Jinja2:s syntax för uttryck.
# index.html
# <h1>Hello, {{ name }}!</h1>
print('Double braces output a value')If-satser
Jinja2:s kontrollsatser använder {% %}. Ett if-block visar innehåll villkorligt.
# {% if user %}
# <p>Welcome back!</p>
# {% else %}
# <p>Please log in.</p>
# {% endif %}
print('{% if %} branches the markup')For-loopar
Iterera över en lista med {% for item in items %} för att rendera upprepad markup, till exempel en lista med produkter.
# <ul>
# {% for item in items %}
# <li>{{ item }}</li>
# {% endfor %}
# </ul>
print('{% for %} repeats markup per item')Filter
Filter omvandlar ett värde med ett rörstreck: {{ name|upper }} gör texten till versaler. Inbyggda filter är bland annat length, default och title.
# {{ name|upper }} -> ALICE
# {{ items|length }} -> count
# {{ bio|default('N/A') }}
print('Filters transform values with |')Mallärvning
En basmall definierar sidans grundstruktur med platshållare av typen {% block %}. Barnmallar {% extends %} den och fyller i blocken.
# base.html
# <body>{% block content %}{% endblock %}</body>
#
# page.html
# {% extends 'base.html' %}
# {% block content %}<p>Hi</p>{% endblock %}
print('extends + block share a layout')Automatisk escaping
Jinja2 escaper automatiskt HTML i variabler, vilket skyddar mot cross-site scripting. Ett värde som <script> visas som text och körs inte.
# If name = '<b>x</b>', {{ name }} renders the literal text
# Auto-escaping is on by default for safety
print('Auto-escaping prevents XSS')Länka med url_for
I mallar kan du fortfarande anropa url_for, ofta för statiska filer: {{ url_for('static', filename='style.css') }}.
# <link rel='stylesheet'
# href="{{ url_for('static', filename='style.css') }}">
print('url_for works inside templates too')Snabbtest
Testa dina kunskaper om Jinja2.
Sammanfattning
Du har lärt dig att använda Jinja2-mallar.
render_template()renderar filer fråntemplates/{{ }}skriver ut värden;{% %}körif/for- Filter som
|upperomvandlar värden extends+blockmöjliggör layoutarvning- Automatisk escaping skyddar mot XSS
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 76
- Lektioner
- 320
Vanliga frågor
Är lektionen ”Mallar med Jinja2” gratis?
Ja – hela texten till ”Mallar med Jinja2” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Mallar med Jinja2”?
Rendera dynamisk HTML Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Python Academy?
Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Mallar med Jinja2”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Python Academy-lektionen?
Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Rutter och vyer
- Mallar med Jinja2
- Formulär och förfrågningsdata
- Bygga en REST-endpoint