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>