Шаблонне розширення
Інша хороша річ, яку має 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`). Скоро ми покажемо вам, як це зробити.
А тепер збережіть зміни і відкрийте знову свій blog/templates/blog/post_list.html
. Видаліть усе, що вище {% for post in posts %}
і нижче {% endfor %}
. Коли ви закінчите, файл виглядатиме так:
Ми хочемо використати це як частина нашого шаблону для всіх блоків контенту. Час додати теги блоків до цього файлу!
Ви хочете, щоб ваший тег блоку підходив до тегу у файлі base.html
. Ви такоже хочете, щоб він включав в себе весь код, що належить вашим блокам з контентом. Щоб зробити це, розмістіть все між {% block content %}
і {% endblock %}
. Як тут:
Залишився один момент. Нам потрібно поєднати ці два шаблони разом. Це і є розширенням шаблонів. Ми зробимо це додаванням на початок файлу тегу розширення. Як тут:
Ось і все! Перевірте, чи ваш сайт все ще коректно працює :)
Якщо з'явилася помилка
TemplateDoesNotExists
, то це говорить про те, що файлуblog/base.html
не існує і ви маєте в консолі запущенийrunserver
, спробуйте зупинити його (натиснувши Ctrl+C - кнопки Control і C buttons разом) і перезавантажити командоюpython manage.py runserver
.
Last updated