Байланысты: Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )
Глава 18 • Знакомство с Django
Дочерний шаблон не обязан определять каждый блок в своем родителе, так что
в родительских шаблонах можно зарезервировать место для любого количе-
ства блоков, а дочерний шаблон будет использовать столько из них, сколько по-
требуется.
ПРИМЕЧАНИЕ В коде Python почти всегда используются отступы в четыре пробела . Файлы шаблонов обычно
имеют больший уровень вложенности, чем файлы Python, поэтому каждый уровень отступа обычно
обозначается двумя пробелами .
Дочерний шаблон
Теперь нужно переписать файл
index .html
так, чтобы он наследовал от
base .html
.
Обновленный файл
index .html
выглядит так:
index.htm
{% extends "learning_logs/base.html" %}
{% block content %}
Learning Log helps you keep track of your learning, for any topic you're
learning about.
{% endblock content %}
Сравнивая этот файл с исходной версией
index .html
, мы видим, что заголовок
Learning Log заменен кодом наследования от родительского шаблона
. В первой
строке дочернего шаблона должен находиться тег
{%
extends
%}
, который сообщает
Django, от какого родительского шаблона он наследует. Файл
base .html
является
частью
learning_logs
, поэтому
learning_logs
включается в путь к родительскому
шаблону. Эта строка извлекает все содержимое из шаблона
base .html
и позволяет
index .html
определить, что должно попасть в пространство, зарезервированное
блоком
content
.
Блок
content
определяется в точке
вставкой тега
{%
block
%}
с именем
content
.
Все, что не наследуется от родительского шаблона, попадает в блок
content
.
В данном случае это абзац с описанием проекта Learning Log. В точке
мы
сообщаем о том, что определение
content
завершено, при помощи тега
{%
endblock
content
%}
.
Вероятно, вы уже начинаете понимать преимущества наследования шаблонов: в до-
черний шаблон достаточно включить информацию, уникальную для этой страницы.
Такой подход упрощает не только каждый шаблон, но и изменение сайта. Чтобы
изменить элемент, общий для многих страниц, достаточно изменить элемент в ро-
дительском шаблоне. Внесенные изменения будут автоматически перенесены на
каждую страницу, наследующую от этого шаблона. В проекте из десятков и сотен
страниц такая структура значительно упрощает и ускоряет доработку сайта.