2011-12-13 24 views
5

Mam template base.html z tagami sitewide dla zestawu znaków, google-site-verification, stylesheets, js .... Muszę też skonfigurować bloki dla tagów tytułowych specyficznych dla strony. i opisy meta.Właściwą metodę dziedziczenia szablonów Django z <head> content

Zastanawiam się, czy powinienem ustawić {% block head%} w moim base.html i w moich tagach dziedziczonych szablonów w tym bloku, czy też powinienem ustawić określone bloki, takie jak {% block meta%} i {% block title%}, aby znaczniki pojawiały się w odpowiednich miejscach, gdy Django renderuje do html.

Czy to ma sens? Jeśli wyświetlam źródło ze wszystkimi tagami zmiksowanymi w jednym {% block head%} rzeczy są nieco nie w porządku, ale jeśli dodaję określone bloki dla każdego tagu, są one w porządku, ale używają znacznie więcej kodu ...?

+0

Chyba zależy to od tego, co zwykle myśleć trzeba zastąpić w inne szablony. – second

Odpowiedz

5

Zwykle mam trzy bloki. Ta trójka pokryła wszystkie potrzeby mojego i mojego kolegi w ciągu ostatnich 1,5 roku :-)

  • Blok za css.

  • Blok dla javascript.

  • Blok zwany "główką-dodatkami". Często chcesz zrobić coś specjalnego na stronie, np. Dodając element linku, który wskazuje na Twój kanał RSS. Lub trochę wbudowanego fragmentu kodu JavaScript. Za pomocą tego bloku możesz w łatwy sposób dopuścić te narożne przypadki.

W szablonach, które rozciągają się szablon bazowy, można użyć {{ super }} w css i blokuje javascript, aby uzyskać listę „Jednostka” oraz rozszerzenie go z własną rękę.

Mam też blok głowy wokół całej sprawy dla tych nielicznych przypadkach, w których po prostu chcą zastąpić wszystko w głowie :-)

+0

Przypuszczam, że jest to przeskok między nadmiernymi blokami szablonów lub pogmatwanymi tagami head - czy jest jakikolwiek powód, aby preferować jeden nad drugim? – shipwreck

+1

Kolejność nie jest zbyt ważna. To * jest * dla mojego css i javascript, ale gdy pakuję je w znacznik django-compressor, łączę je w locie w jeden plik. Poza tym technicznym powodem, po prostu utrzymywałbym liczbę bloków bez przesadnych. Przeglądarka nie ma wpływu na kolejność tagów head, ale sam czerpie dużo korzyści z szablonowej jakości. –

+1

Dziękuję za poświęcony czas, Reinout, i dziękuję za wzmiankę o {{super}} i kompresorze django - będę badał – shipwreck