Rozširovanie šablón
Ďalšia super možnosť, ktorú ti Django ponúka, je rozširovanie šablón (template extending). Znamená to, že môžeš použiť rovnaké časti HTML kódu na rôznych stránkach svojho webu.
Šablóny ti pomôžu, keď chceš použiť rovnaké informácie alebo formát obsahu na viac ako jednom mieste. Nemusíš dokola opakovať to isté. A ak chceš niečo zmeniť, nemusíš to urobiť v každej šablóne, len v jednej!
Vytvorenie základnej šablóny
Základná šablóna (base template) je najzákladnejšia šablóna, ktorú rozširuješ na každej stránke svojej web stránky.
Vytvorme súbor base.html
v priečinku blog/templates/blog/
:
Otvor ho v editore a skopíruj všetko z post_list.html
do base.html
takto:
Potom v base.html
nahraď celé <body>
(všetko medzi <body>
a </body>
) týmto:
Možno si si všimla, že toto nahradilo všetko od {% for post in posts %}
po {% endfor %}
týmto:
Ale prečo? Práve si vytvorila blok
! Použila si šablónový tag `
`, aby si vytvoila časť, do ktorej bude vložené HTML. To HTML bude pochádzať z inej šablóny, ktorá rozšíri túto šablónu (`base.html`). Hneď ti ukážeme, ako sa to robí.
Teraz ulož base.html
a znova otvor blog/templates/blog/post_list.html
v editore. Odstrániš všetko nad {% for post in posts %}
a pod {% endfor %}
. Keď skončíš, súbor bude vyzerať nasledovne:
Chceme toto použiť ako súčasť našej šablóny pre všetky bloky. Je načase pridať blokové tagy do tohto súboru!
Blokový tag by sa mal zhodovať s tagom v base.html
súbore. Taktiež by mal obsahovať celý kód, čo patrí do tvojich obsahových blokov. To docieliš tak, že vložíš všetko medzi {% block content %}
a {% endblock %}
. Takto:
Už zostáva len jediná vec. Potrebujeme tieto dve šablóny prepojiť. To je celá podstata rozširovania šablón! Urobíme to pridaním "extends" tagu na začiatku súboru. Nasledovne:
A je to! Súbor ulož a skontroluj, či tvoja web stránka stále funguje tak, ako má. :)
Ak sa ti zobrazí chyba
TemplateDoesNotExist
, znamená to, že neexistuje súborblog/base.html
arunserver
beží v konzole. Skús ho zastaviť (stlačením Ctrl+C – tlačidiel Control a C spolu) a spustiť znova pomocou príkazupython manage.py runserver
.
Last updated