Ereditarietà
Puoi notare navigano su qualsiasi sito web che alcuni elementi sono presenti in diverse pagine web.
Per esempio la barra di navigazione è un elemento comune nelle pagine in un sito.
Immagina di avere file separati per ogni pagina web e di voler modificare la barra di navigazione. Dovresti cambiare il contenuto di ogni template del sito, una ad una, un lavoro enorme!
Per risolvere questo problema, i file dei template vengono utilizzati per condividere il contenuto di più template.
I delimitatori di dichiarazione in Jinja2 sono usati per identificare l'area del template in cui il contenuto specifico sarà sostituito.
<html>
<head>
<title>Mio sito web</title>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
Per questo esercizio chiameremo l'esempio sopra con prova.html.
Per ereditare questo contenuto in un altro template useremo la dichiarazione extends. Il codice da sostituire dovrà poi essere avvolto da {%block content%} e {%endblock%}.
Nel codice sotto riporto quello che sarà posizionato nella pagina ipotetica index.html.
{% extends "prova.html" %}
{% block content %}
<p>Benvenuto su tuttofaredigitale.it</p>
{% endblock %}
Il risultato sarà il seguente (quando route restituisce render_template("index.html") la pagina renderizzata avrà questo contenuto.
<html>
<head>
<title>Mio sito web</title>
</head>
<body>
<p>Benvenuto su tuttofaredigitale.it</p>
</body>
</html>