2011-12-13 8 views
5

Ho un modello base.html con tag di sitewide per charset, google-site-verification, stylesheets, js .... Ho anche bisogno di impostare blocchi per tag title specifici per pagina e meta descrizioni.Metodo corretto per l'ereditarietà template Django del contenuto <head>

Mi chiedo, dovrei impostare un {% block head%} nel mio file base.html e nel mio modello ereditato mix in quel blocco, o dovrei impostare blocchi specifici come {% block meta%} e {% block title%} in modo che i tag appaiano nelle loro posizioni corrette quando Django esegue il rendering in html.

Ha senso? Se visualizzo la fonte con tutti i tag misti in uno {% block head%} le cose sono un po 'fuori uso, ma se aggiungo blocchi specifici per ogni tag sono in ordine ma usano molto più codice ...?

+0

Immagino che dipende da quello che di solito pensa è necessario sostituire in altri modelli. – second

risposta

5

Normalmente ho tre blocchi. Quei tre hanno coperto tutte le esigenze mia e del mio collega negli ultimi 1,5 anni :-)

  • Un blocco per i CSS.

  • Un blocco per javascript.

  • Un blocco denominato "head-extras". Spesso vuoi fare qualcosa di speciale su base pagina per pagina come aggiungere un elemento link che punta al tuo feed rss. O qualche frammento javascript in linea. Con questo blocco, consenti a questi casi angolari in modo chiaro.

Nei modelli che estendono il modello di base, è possibile utilizzare {{ super }} nel CSS e JavaScript blocchi per ottenere l'elenco del "padre" ed estenderlo con il proprio.

Ho anche un blocco di testa intorno il tutto per quei pochi casi in cui si vuole solo ignorare tutto nella testa :-)

+0

Suppongo che si tratti di una sovrapposizione tra blocchi di template eccessivi o tag di testa confusi - c'è qualche motivo per preferire uno rispetto all'altro? – shipwreck

+1

L'ordine non è troppo importante. È * per * il mio css e javascript, però, mentre li avvolgo in un tag django-compressor per combinarli al volo in un unico file. A parte questo motivo tecnico, terrei il numero di blocchi non eccessivo. Al browser non interessa l'ordine dei head tag, ma tu stesso guadagni molto dal modello ordinato. –

+1

Grazie per il tuo tempo, Reinout, e grazie per aver menzionato {{super}} e django-compressor - indagherò – shipwreck