11. Ereditarietà tra Templates
Ora che il nostro "motore" è praticamente pronto, ciò che possiamo fare e dare una bella passata di semplificazione anche alla "carrozzeria"! Con questo intendo che andremo ad alleggerire i nostri template html usando l'ereditarietà tra template accessibile in Django mediante l'utilizzo dei tag del Django template engine.
Modifichiamo i template in modo tale che ereditino da base.html
Il concetto è semplice: abbiamo un template base.html da cui ereditano tutti gli altri template. Il codice viene ereditato tramite l'utilizzo dei tag. Il tutto funziona come una finestra: i template figli avranno una finestra che da sul template genitore, facendoci risparmiare un sacco di tempo in fase di styling.
base.html
Questo è il template genitore! I vari tag vengono quindi ereditati da tutte le classi figlie che "estendono" questo template genitore, mediante il tag {% extends "base.html" %}.
<!--DOCTYPE html -->
<html>
<title>{% block head_title %}My Django Blog{% endblock head_title%}</title>
<body>
<div class="container">
{% block content %}
{% endblock content %}
</div>
</body>
</html>
lista_post.html
{% extends "base.html" %}
{% block content %}
{% for object in object_list %}
<h1><a href="{{object.get_absolute_url}}">{{object.titolo}}</a></h1>
{{ object.data }}
{{ object.contenuto|safe|linebreaks|truncatewords_html:50 }}
{% endfor %}
{% endblock content %}
post_singolo.html
{% extends "base.html" %}
{% block head_title %}{{ block.super }} | {{ object.titolo }}{% endblock head_title %}
{% block content %}
<h1>{{ object.titolo }}</h1>
<h4>{{ object.data }}</h4>
{{ object.contenuto|safe|linebreaks }}
{% endblock content %}
contatti.html
{% extends "base.html" %}
{% block head_title %}{{ block.super }} | Contatti{% endblock head_title %}
{% block content %}
<h1>Contattaci alla mail:</h1>
<h2>Mail: mia mail</h2>
{% endblock content %}
Nella prossima lezione faremo in modo che il nostro progetto possa fare uso di file statici come fogli di stile CSS e immagini.