Estendere il template
Un'altra cosa bella di Django è l'estensione dei template. Cosa significa? Significa che puoi usare le stesse parti del tuo HTML per pagine diverse del sito.
Così non hai bisogno di ripetere le stesse informazioni o il layout in ogni file. E se vuoi cambiare qualcosa, non devi cambiarlo in ogni templates, ma soltanto una volta!
Crea un template di base
Un template base è il template più semplice. Lo puoi estendere su ogni pagina del tuo sito.
Creiamo un file base.html in blog/templates/blog/:
Poi aprilo e copia tutto da post_list.html e incollalo sul file base.html, così:
blog/templates/blog/base.html
Poi nel base.html, rimpiazza tutto il tuo <body> (tutto quello che si trova tra <body> e </body>) con questo:
blog/templates/blog/base.html
Abbiamo praticamente rimpiazzato tutto quello da {% for post in posts %} a {% endfor %} con:
blog/templates/blog/base.html
Ma... Perchè? Hai appena creato un blocco! Hai usato il template tag {% block %} per creare una zona che avrà dell'HTML al suo interno. Quell'HTML arriverà da un altro template che estende questo template (base.html). Vedremo come fare tra un momento.
Ora salva blog/templates/blog/base.html e apri il tuo blog/templates/blog/post_list.html di nuovo. Cancella tutto quello che sta prima di {% for post in posts %} e dopo {% endfor %}.
Quando hai finito il tuo file dovrebbe essere così:
blog/templates/blog/post_list.html
Vogliamo usare questo template come contenuto del nostro {% block content %} creato prima. Quindi dobbiamo aggiungere il template tag block a questo file.
Dobbiamo fare in modo che il template tag block in questo file combaci con quello in base.html. Dobbiamo anche far in modo che tutto il codice sia all'interno del nostro template tag block. Per farlo, metti tutto tra {% block content %} and {% endblock %}. Così:
blog/templates/blog/post_list.html
Rimane solo una cosa da fare. Dobbiamo collegare questi due template tra loro. Questo è esattamente ciò che significa estendere i template! Lo faremo usando un nuovo template tag chiamato extend e lo metteremo all'inizio del file.
Così:
blog/templates/blog/post_list.html
È tutto! Controlla se il tuo sito sta ancora funzionando correttamente :)
Se hai un errore
TemplateDoesNotExistsche dice che non c'è un fileblog/base.htmle hairunserverin esecuzione nella console, prova a fermarlo (premendo Ctrl+C - I tasti Control e C insieme) e riavvialo mettendo in esecuzione il comandopython manage.py runserver.