http://www.darioagliottone.it/django-ereditarieta-dei-template/
Questo template che chiameremo base.html definisce lo scheletro html che si protrebbe usare per una pagina a due colonne e definisce i blocchi che i template figli andranno a riempire. In questo esempio il tag block definisce tre blocchi. Questo tag non fa altro che specificare al motore di templating che un template figlio pu sovrascrivere quella parte. Un template figlio pu essere simile a questo: 1 2 3 4 5 6 7 8 9 10 11 12 {% extends "base.html" %} {% block title %}My amazing blog{% endblock %} {% block content %} {% for entry in blog_entries %} <h2>{{ entry.title }}</h2> {{ entry.body }} {% endfor %} {% endblock %}
il tag exetens dice al motore di templating che si estende un altro modello. Quando viene caricato questo template, prima di tutto viene localizzato il genitore, in questo caso base.html. A quel punto il motore vedr i tre bloks e li sostituira con quelli del template figlio. A seconda del valore di blog_entries. loutput mostrato potrebbe essere simile a questo: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <link rel="stylesheet" href="style.css"> <div id="sidebar"> <ul> <li><a href="/">Home</a></li> <li><a href="/blog/">Blog</a></li> </ul></div> <div id="content"> <h2>Entry one</h2> This is my first entry. <h2>Entry two</h2> This is my second entry. </div>
Se il template figlio non ha ridefinito un blocco verra utilizzato quello del padre. Si possono utilizzare diversi livelli di ereditariet, abbastanza usato un approccio a tre livelli: un tempalte base.html con lo stile principale del sito un base_SECTIONAME.html come modello per ogni sezione del sito che estende base.html, come per esempio base_new.html, base_sports.html ecc.. creare template individuale per ogni tipo di pagina per esempio un articolo o un post Questo approccio massimizza il riutilizzo del codice e rende facile aggiungere aree condivise come pu essere la navigazione. Alcuni suggerimenti: se usi exetens in un template deve esssere il primo tag di quel template senno leridarieta non funzioner
1 di 2
18/05/12 13.52
http://www.darioagliottone.it/django-ereditarieta-dei-template/
piu tag block ci sono meglio . Ricordate che non necessario ridefinire tutti i blocchi ma solo quelli che vi servono se vi trovate a dover replicare lo stesso codice in pi tempalate allora forse il caso di spostare il coce in un blocco del template genitore quando si vuol aggiungere il contenuto del blok padre invece di sovrascriverlo si puo usare la variabile {{ block.super }} per una maggiore leggibilita del codice puoi dare un nome al tag endblock Infine, ricordatevi che non possibile dare lo stesso nome a piu blocchi!
2 di 2
18/05/12 13.52