0Pricing
Python Academy · Lezione

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 in templates/
  • {{ }} visualizza i valori; {% %} esegue if/for
  • Filtri come |upper trasformano i valori
  • extends + block consentono 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

  1. Route e viste
  2. Template con Jinja2
  3. Form e dati delle richieste
  4. Creare un endpoint REST
← Torna a Python Academy