0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Каждая страница любого сайта содержит свое содержимое и общие части - футер или боковое меню. В Django можно наследовать шаблоны. Это позволяет создать базовый шаблон. Он содержит все общие элементы сайта и определяет блоки, которые могут переопределять дочерние шаблоны.</p>
1
<p>Каждая страница любого сайта содержит свое содержимое и общие части - футер или боковое меню. В Django можно наследовать шаблоны. Это позволяет создать базовый шаблон. Он содержит все общие элементы сайта и определяет блоки, которые могут переопределять дочерние шаблоны.</p>
2
<p>В этом уроке мы научимся наследовать шаблоны в Django.</p>
2
<p>В этом уроке мы научимся наследовать шаблоны в Django.</p>
3
<h2>Наследование шаблонов</h2>
3
<h2>Наследование шаблонов</h2>
4
<p>Создадим новый шаблон<em>base.html</em>со следующим содержимым:</p>
4
<p>Создадим новый шаблон<em>base.html</em>со следующим содержимым:</p>
5
<p>Этот HTML-документ определяет базовую структуру нашего сайта. Задача дочерних шаблонов - заполнить пустые блоки содержимым. В этом примере инструкция block сообщает шаблонизатору, какие участки страницы в дальнейшем могут быть переопределены в дочерних шаблонах.</p>
5
<p>Этот HTML-документ определяет базовую структуру нашего сайта. Задача дочерних шаблонов - заполнить пустые блоки содержимым. В этом примере инструкция block сообщает шаблонизатору, какие участки страницы в дальнейшем могут быть переопределены в дочерних шаблонах.</p>
6
<p>Отредактируем шаблон<em>hexlet_django_blog/templates/about.html</em>следующим образом:</p>
6
<p>Отредактируем шаблон<em>hexlet_django_blog/templates/about.html</em>следующим образом:</p>
7
<p>Инструкция extends является ключевой. Она сообщает шаблонизатору, что этот шаблон "расширяет" другой шаблон. Теперь, когда шаблонизатор будет обрабатывать наш шаблон<em>about.html</em>, инструкция extends найдет родительский -<em>base.html</em>. Далее она заменит в нем те блоки, которые мы переопределили в шаблоне<em>about.html</em>.</p>
7
<p>Инструкция extends является ключевой. Она сообщает шаблонизатору, что этот шаблон "расширяет" другой шаблон. Теперь, когда шаблонизатор будет обрабатывать наш шаблон<em>about.html</em>, инструкция extends найдет родительский -<em>base.html</em>. Далее она заменит в нем те блоки, которые мы переопределили в шаблоне<em>about.html</em>.</p>
8
<p>Поскольку в шаблоне<em>about.html</em>мы не используем блок sidebar, вместо него будет использоваться значение из родительского шаблона. Содержимое внутри тега в родительском шаблоне всегда используется как значение по умолчанию.</p>
8
<p>Поскольку в шаблоне<em>about.html</em>мы не используем блок sidebar, вместо него будет использоваться значение из родительского шаблона. Содержимое внутри тега в родительском шаблоне всегда используется как значение по умолчанию.</p>
9
<p>Можно использовать столько уровней наследования, сколько необходимо. Один из распространенных способов использования наследования - трехуровневый подход:</p>
9
<p>Можно использовать столько уровней наследования, сколько необходимо. Один из распространенных способов использования наследования - трехуровневый подход:</p>
10
<ul><li>Создание<em>base.html</em>шаблона, который содержит основной внешний вид сайта</li>
10
<ul><li>Создание<em>base.html</em>шаблона, который содержит основной внешний вид сайта</li>
11
<li>Создание<em>base_SECTIONNAME.html</em>шаблонов для каждого раздела сайта, например,<em>base_article.html</em>,<em>base_news.html</em>. Эти шаблоны расширяют<em>base.html</em>и включают в себя стили для конкретных разделов</li>
11
<li>Создание<em>base_SECTIONNAME.html</em>шаблонов для каждого раздела сайта, например,<em>base_article.html</em>,<em>base_news.html</em>. Эти шаблоны расширяют<em>base.html</em>и включают в себя стили для конкретных разделов</li>
12
<li>Создание отдельного шаблона для каждого типа страницы, например, новостной статьи или записи в блоге. Эти шаблоны расширяют соответствующий шаблон раздела</li>
12
<li>Создание отдельного шаблона для каждого типа страницы, например, новостной статьи или записи в блоге. Эти шаблоны расширяют соответствующий шаблон раздела</li>
13
</ul><p>Такой подход максимизирует повторное использование кода и помогает добавлять элементы в области общего содержимого, например, навигацию по всему разделу.</p>
13
</ul><p>Такой подход максимизирует повторное использование кода и помогает добавлять элементы в области общего содержимого, например, навигацию по всему разделу.</p>