Estendere il template
Un'altra cosa bella di Django è l'estensione del template. Cosa significa? Significa che puoi usare le stesse parti del tuo HTML per pagine diverse del tuo sito.
I template ti aiutano quando vuoi usare le stesse informazioni o gli stessi layout in pagine diverse. Non devi ripetere lo stesso codice in ogni file. E se vuoi cambiare qualcosa, non lo devi fare in ogni template, ma solo in uno!
Creare un template di base
Un template di base è il template più semplice. Lo puoi estendere ad ogni pagina del tuo sito.
Creiamo un file base.html
in blog/templates/blog/
:
Poi aprilo nell'editor di codice e copia tutto da post_list.html
al file base.html
, in questo modo:
Poi nel base.html
, rimpiazza tutto il tuo <body>
(tutto quello che si trova tra <body>
e </body>
) con questo:
Potresti aver notato che questo sostituisce tutto da {% for post in posts %}
a {% endfor %}
con:
Perchè? Hai appena creato un blocco! Hai appena usato un template tag `
` per creare un area che che avrà dell'HTML all'interno. Questo codice HTML verrà da altri template che estenderanno questo (`base.html`). Ti mostreremo come farlo tra un attimo.
Ora salva base.html
e apri di nuovo il tuo blog/templates/blog/post_list.html
nell'editor di codice. Rimuovi tutto quello che c'è prima di {% for post in posts %}
e dopo {% endfor %}
. Quando hai finito, il file apparirà così:
Vogliamo usare questa parte del nostro template per ogni blocco per i contenuti. Aggiungiamo un tag block in questo file!
Dobbiamo fare in modo che il tuo tag block combaci con quello nel tuo filebase.html
. Dobbiamo anche includere tutto il codice del blocco dei contenuti. Per farlo, metti tutto tra {% block content %}
e {% endblock %}
. Come questo:
Un'ultima cosa. Dobbiamo collegare questi due template. È questo che vuol dire estendere i template! Lo faremo aggiungendo un tag extends all'inizio del file. Così:
Ecco fatto! Salva il file e controlla se il tuo sito web funziona ancora correttamente. :)
Se ottieni l'errore
TemplateDoesNotExist
, significa che non c'è nessun fileblog/base.html
erunserver
è in esecuzione nella console. Prova ad arrestarlo (premendo Ctrl+C, i tasti Control e C insieme) e riavvialo utilizzando il comandopython manage.py runserver
.
Last updated