Template

Hai notato durante il tuo navigare in internet che molte delle pagine di un determinato sito hanno un aspetto simile?

Questo aspetto di un sito web può essere ottenuto con l'uso di modelli, o template. Il termine template si riferisce a un file HTML che può rappresentare più pagine web con la stessa struttura e funzionalità.

Flask utilizza il potente strumento Jinja2 come inizializzatore per visualizzare i file HTML che includono le variabili dell'applicazione e le strutture di controllo.

Per lavorare con i  template, usiamo la funzione Flask render_template(). Usata nell'istruzione return, questa funzione prende come argomento il nome di un file template e restituisce il contenuto da inviare al client. Viene utilizzato il motore di Jinja2 per generare l'HTML utilizzando il file template come modello.

return render_template ("mio_template.html")

Per usare render_template() nei tuoi route devi importarlo da flask.

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def index():
   return render_template ("index.html")

La cartella (directory) dove devono essere posizionati i file template deve chiamarsi templates.

Variabili del template

Le variabili dei template sono rappresentazioni dei dati dell'applicazione che vengono utilizzati all'interno dei template.

Sono create usando gli argomenti in render_template, le variabili template sono sostituite in un template utilizzando i delimitatori di espressione {{ }}.

Usato nei template Jinja, i delimitatori di espressione {{ }} avvolgono le variabili che devono essere identificate dal motore del template.

return render_template ("mio_template.html", template_var1=flask_var1, template_var2=flask_var2)

# Le variabili del template sono sostituite in
#"mio_template" utilizzando il seguente formato
# {{ template_var1 }} e {{ template_var2 }}
<html>
  <body>
    <h1>{{ template_var1 }}</h1>
    <p>{{ template_var2 }}</p>
  </body>
</html>

Ora che possiamo usare le variabili nei nostri template, esaminiamo i diversi modi con le quali possiamo lavorare.

Possiamo applicare dei filtri, questi sono usati dal motore dei template (Jinja2) per agire sulle variabili dei template. Per utilizzarli basta inserire dopo la variabile il nome del filtro all'interno delle doppie parentesi graffe, il delimitatore di espressione, e separarli con il carattere | (la barra verticale).

{{ variabile | nome_filtro }}

Il filtro title, ad esempio, agisce su una variabile con assegnata una stringa e treasforma la prima lettera di ogni parola in maiuscolo.

Data la variabile di assegnazione template_titolo = "ti presento il mio sito web".

{{ template_heading |  title }}

OUTPUT
Ti Presento Il Mio Sito Web

Mentre i filtri svolgono funzioni più complesse rispetto ai semplici operatori, sono comunque azioni mirate.

Ecco un elenco dei filtri comunemente applicati:

  • title: in maiuscolo la prima lettera di ogni parola in una stringa.
  • capitalize: mette in maiuscolo il primo carattere di una stringa.
  • lower/uppercase: rende tutti i caratteri di una stringa minuscoli/minuscoli.
  • int/float: cambia qualsiasi variabile numerica in un numero intero/float.
  • default: definisce una stringa di default se la variabile non è definita.
  • length: calcola la lunghezza di una stringa, di una lista o di una variabile del dectionary.
  • dictsort: ordina un dizionario in base alle sue chiavi.