Python Academy · Lektion

Mallar med Jinja2

Rendera dynamisk HTML

Lektion 2 av 413 steg

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ån templates/
  • {{ }} skriver ut värden; {% %} kör if/for
  • Filter som |upper omvandlar värden
  • extends + block möjliggör layoutarvning
  • Automatisk escaping skyddar mot XSS
Gratis att börja

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

  1. Rutter och vyer
  2. Mallar med Jinja2
  3. Formulär och förfrågningsdata
  4. Bygga en REST-endpoint
← Tillbaka till Python Academy