Controllo del Flusso

Grazie a Flask si può controllare il flusso come in un normale script in Python anche nei nostri template. L'inclusione di condizionamenti if e if/else ci permette di controllare come vengono gestiti i dati.

Per utilizzare le dichiarazioni in un template si utilizza il delimitatore di dichiarazioni: {% %}.

{% if condition %}
 <p>Testo restituito se la condizione è True</p>
{% endif %}

Il delimitatore {% endif %} è necessario per chiudere la dichiarazione if.

La condizione può includere una variabile che viene testata utilizzando operatori di confronto standard, <, >, >=, <=, >=, ==, !=.

{% if variabile_template == "Benvenuto" %}
 <p>{{variabile_template}} su tuttofaredigitale.it</p>
{% endif %}

All'interno dei delimitatori di frase {% %} possiamo accedere alle variabili senza usare il consueto delimitatore di espressione {{ }}.

Una variabile definita come None o False o uguale a 0 o contenente una sequenza vuota come "" o [] verrà testata come False.

I delimitatori {% else %} e {% elif %} possono essere inclusi per creare sequenze multiple se le affermazioni.

Loop For

I processi ripetitivi sono di uso comune nella maggior parte delle applicazioni informatiche e nei template non è diverso. La creazione di liste, tabelle sono tutti compiti ripetitivi che possono essere risolti utilizzando il for loop.

Usando lo stesso blocco di delimitazione delle dichiarazioni come hai visto per l'if {% %}.

<ol>{% for x in range(3) %}
 <li>{{ x }}</li>
{% endfor%}
</ol>

# Output:
1. 0
2. 1
3. 2

La sintassi è simile a quella di un normale for in Python. La variabile del loop locale può essere usata all'interno del loop con l'espressione delimitatore {{ }}.

Simile alle affermazioni if dobbiamo chiudere il loop con la dicitura {%endfor%}.

Di seguito sono riportate alcune altre applicazioni di un for loop.

In una lista:

{% for elemento in template_lista %}

In una stringa:

{% for carattere in "Stringa" %}

Iterate in un dictionary:

{% for chiave in template_dict %}

Iterate con chiavi ed i valori di un dictionary con item():

{% for chiave, valore in template_dict.items() %}

Usando il dictsort del filtro in un loop, le coppie chiave/valore vengono emesse proprio come items().