Template con Jinja2
Renderizzare HTML dinamico
Template con Jinja2 è una lezione Python Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Python Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Python Academy include 4 lezioni in totale.
Perché utilizzare i template?
Restituire HTML da stringhe Python diventa rapidamente complicato. I template mantengono l'HTML in file separati e inseriscono i dati al momento del rendering. Flask utilizza il motore Jinja2.
from flask import Flask, render_template
app = Flask(__name__)
# render_template loads a file from the templates/ folder
print('Jinja2 powers Flask templates')La cartella templates
Flask cerca i template in una cartella chiamata templates/ accanto all'app. I file terminano solitamente con .html.
# project/
# app.py
# templates/
# index.html
print('Templates live in templates/')render_template
render_template('index.html') carica un template e restituisce l'HTML renderizzato come risposta.
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
print('home renders index.html')Passaggio dei dati
Passi le variabili come argomenti con nome. Il template potrà quindi visualizzarle.
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')Visualizzazione delle variabili
Nel template, {{ name }} stampa una variabile. Le doppie parentesi graffe costituiscono la sintassi delle espressioni di Jinja2.
# index.html
# <h1>Hello, {{ name }}!</h1>
print('Double braces output a value')Istruzioni if
Le istruzioni di controllo di Jinja2 utilizzano {% %}. Un blocco if mostra il contenuto in modo condizionale.
# {% if user %}
# <p>Welcome back!</p>
# {% else %}
# <p>Please log in.</p>
# {% endif %}
print('{% if %} branches the markup')Cicli for
Esegua un ciclo su un elenco con {% for item in items %} per generare markup ripetuto, ad esempio un elenco di prodotti.
# <ul>
# {% for item in items %}
# <li>{{ item }}</li>
# {% endfor %}
# </ul>
print('{% for %} repeats markup per item')Filtri
I filtri trasformano un valore tramite una barra verticale: {{ name|upper }} lo converte in maiuscolo. Tra i filtri integrati ci sono length, default e title.
# {{ name|upper }} -> ALICE
# {{ items|length }} -> count
# {{ bio|default('N/A') }}
print('Filters transform values with |')Ereditarietà dei template
Un template di base definisce la struttura della pagina con segnaposto {% block %}. I template figlio lo {% extends %} e compilano i blocchi.
# base.html
# <body>{% block content %}{% endblock %}</body>
#
# page.html
# {% extends 'base.html' %}
# {% block content %}<p>Hi</p>{% endblock %}
print('extends + block share a layout')Escape automatico
Jinja2 applica automaticamente l'escape all'HTML contenuto nelle variabili, proteggendo dagli attacchi cross-site scripting. Un valore come <script> viene mostrato come testo e non viene eseguito.
# If name = '<b>x</b>', {{ name }} renders the literal text
# Auto-escaping is on by default for safety
print('Auto-escaping prevents XSS')Collegamento con url_for
Nei template può comunque chiamare url_for, spesso per i file statici: {{ url_for('static', filename='style.css') }}.
# <link rel='stylesheet'
# href="{{ url_for('static', filename='style.css') }}">
print('url_for works inside templates too')Verifica rapida
Verifichi le proprie conoscenze su Jinja2.
Riepilogo
Ha imparato a utilizzare i template Jinja2.
render_template()esegue il rendering dei file presenti intemplates/{{ }}visualizza i valori;{% %}esegueif/for- Filtri come
|uppertrasformano i valori extends+blockconsentono l'ereditarietà del layout- L'escape automatico protegge dagli attacchi XSS
Domande Frequenti
La lezione «Template con Jinja2» è gratuita?
Sì — il testo completo di «Template con Jinja2» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Python Academy, passa a CoddyKit PRO. Il corso Python Academy include 4 lezioni in totale.
Cosa imparerò in «Template con Jinja2»?
Renderizzare HTML dinamico Eserciti Python Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Python Academy?
Non è richiesta alcuna esperienza precedente. Python Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Template con Jinja2»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Python Academy?
Sì. Ogni lezione Python Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Route e viste
- Template con Jinja2
- Form e dati delle richieste
- Creare un endpoint REST