Разширяване на шаблони
Друго хубаво нещо, което Django има за вас, е разширяване на шаблона. Какво означава това? Това означава, че можете да използвате същите части на вашия HTML за различни страници на вашия уебсайт.
Шаблоните помагат, когато искате да използвате една и съща информация или оформление на повече от едно място. Не е нужно да се повтаряте във всеки файл. И ако искате да промените нещо, не е необходимо да го правите във всеки шаблон, само в един!
Създайте основен шаблон
Базовият шаблон е най-основният шаблон, който разширявате на всяка страница от вашия уебсайт.
Нека създадем base.html
файл в blog/templates/blog/
:
След това го отворете в редактора на кода и копирайте всичко от post_list.html
във base.html
файл, като този:
След това в base.html
заменете съдържанието в секцията <body>
(всичко между <body>
и </body>
) с това:
Може да забележите, че това замени всичко от {% for post in posts %}
до {% endfor %}
с:
Но защо? Току-що създадохте block
! Използвахте шаблонния маркер `
`, за да направите област, в която да бъде вмъкнат HTML код. Този HTML код ще идва от друг шаблон, който разширява този шаблон (`base.html`). Ще ви покажем как да направите това след малко.
Сега запишете base.html
и отворете вашия blog/templates/blog/post_list.html
отново в редактора на кода. Ще премахнете всичко по-горе {% for post in posts %}
и под {% endfor %}
. Когато приключите, файлът ще изглежда така:
Искаме да използваме това като част от нашия шаблон за всички съдържателни блокове. Време е да добавите блокови тагове към този файл!
Искате вашият маркер за блока да съвпада с маркера във вашия base.html
файл. Освен това искате той да включва всички кодове, които принадлежат във вашите блокове на съдържание. За целта поставете всичко между {% block content %}
и {% endblock %}
. Ето така:
Остана само едно нещо. Трябва да свържем тези два шаблона заедно. За това става въпрос в разширяващите се шаблони! Ще направим това, като добавим маркер за разширения в началото на файла. Ето така:
Това е! Запазете файла и проверете дали уебсайтът ви все още работи правилно. :)
Ако получите грешката
TemplateDoesNotExist
, това означава, че нямаblog/base.html
файл и иматеrunserver
работещ в конзолата. Опитайте се да го спрете (като натиснете Ctrl + C - клавишите Control и C заедно) и го рестартирайте, като изпълните командаpython manage.py runserver
.
Last updated