HTML Diff
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>