Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

Одной из самых мощных функций Django является возможность динамического повторного использования кода. Наследование шаблонов позволяет совместно использовать код между родительским и дочерним шаблонами. Это значительно снижает дублирование усилий.

У Django есть свой язык шаблонов, предназначенный для смешивания с HTML. Вам будет легко работать с шаблонами Django, если вы раньше работали с HTML-кодом. Другие текстовые языки шаблонов, такие как Smarty или Jinja2, имеют аналогичный синтаксис.

Давайте узнаем больше о наследовании шаблонов, создав проект Django.

Что такое шаблон Django?

В Django шаблон — это текстовый файл, который может генерировать любой текстовый формат, например HTML, XML или CSV.

Теги шаблона Django управлять логикой включения переменных и значений в шаблон. Теги помогают отделить логику программы от представления шаблона. Они также помогают содержать ваши шаблоны в чистоте и порядке.

instagram viewer

В Django есть много встроенных тегов, которые выглядят как {% ярлык %}. Теги полезны во многих отношениях. Они могут создавать текст на выходе, выполнять циклы и загружать информацию в шаблон.

В этом проекте вы будете использовать теги для демонстрации наследования шаблонов.

Создать проект Джанго

Для начала, создать проект Джанго. Создайте приложение с именем шаблоны. После этого вы готовы создать функцию представления для приложения, путь URL-адреса и шаблоны, чтобы продемонстрировать наследование шаблонов.

Создайте функцию просмотра

Сначала создайте вид функция, которая отображает шаблоны. В этом случае вы будете рендерить index.html шаблон. Импортировать оказывать метод из ярлыков Django. Затем создайте функцию представления с именем index, которая возвращает и отображает шаблон индекса.

от django.shortcuts Импортировать оказывать
# Создайте свои представления здесь.
дефиндекс(запрос):
вернуть рендер (запрос,'index.html')

Создать URL-путь

Далее создайте URL-адрес для функции просмотра для отображения шаблонов. Импортировать путь функция из django.urls и вид функция от просмотры.py файл. Затем импортируйте настройки и статический для рендеринга любых изображений и мультимедиа, которые могут быть в шаблонах.

от django.urls Импортировать путь
от. Импортировать Просмотры
от django.conf Импортировать настройки
от django.conf.urls.static Импортироватьстатический
URL-шаблоны=[
путь('',views.index, имя='индекс'),
]
еслинастройки.ОТЛАЖИВАТЬ:
URL-шаблоны+=статический(настройки. MEDIA_URL, document_root=settings. MEDIA_ROOT)

Создать шаблоны

Теперь, когда у вас есть вид и URL-адрес путь, создайте шаблоны. Чтобы продемонстрировать наследование шаблона, создайте base.html как родительский шаблон. base.html файл будет иметь общие элементы, которыми вы хотите поделиться index.html, дочерний шаблон.

{% загрузить бутстрап5%}
{% нагрузка статический %}
<!ДОКТИП HTML>
<html язык ="en">
<голова>
<мета кодировка ="UTF-8">
<мета http-эквивалент="X-UA-совместимый" содержание ="IE=край">
<мета имя ="окно просмотра" содержание ="ширина = ширина устройства, начальный масштаб = 1,0">
<!-- названия -->
{% если заголовок %}
<заголовок> Унаследованные шаблоны {{title}}</title>
{% еще %}
<заголовок> Унаследованные шаблоны </title>
{% конец %}
{% стилей блоков %}
{% bootstrap_css%}
<ссылка отн="таблица стилей" ссылка="{% статический 'css/стиль.css' %}">
{% конечный блок%}
</head>
<тело>
{% включать 'navbar.html' %}
{% блокировать содержимое %} {% endblock %}
<!-- Ссылки начальной загрузки -->
<источник сценария ="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" целостность ="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MSXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" перекрестное происхождение ="анонимный"></script>
</body>
</html>

Сначала загрузите Bootstrap и статические зависимости на base.html шаблон. Ты можешь используйте структуру Bootstrap с вашим проектом Django для оформления HTML-страниц. Статическая зависимость, загруженная вверху, загрузит активы, включенные в статическую папку.

Шаблоны Django позволяют передавать биты логики, отвечающие за отображение контента. Теги шаблона состоят из текста, окруженного "{%" и "%}" персонажи. если еще оператор проверяет условия в функции представления. Если условие истинно, оно отображает содержимое в первом блоке; если false, он будет отображать содержимое во втором.

base.html файл также будет отображать содержимое navbar.html прямо там, где вы размещаете теги шаблона. Это означает, что всякий раз, когда вы продлеваете base.html, navbar.html также передается по наследству. Любой шаблон, расширяющий base.html наследует любой элемент с {% включать %} ярлык.

Любой текст, окруженный {{}} является переменной шаблона. Переменные шаблона — это динамические данные, предоставляемые функциями просмотра. Django также использует блочные теги, которые используют открытый тег, например {% заблокировать содержимое %}и закрывающий тег, например {% конечный блок%}.

Блочные теги позволяют дочерним шаблонам переопределять содержимое родительских шаблонов. В этом случае index.html может заменить свое содержимое в области, ограниченной блочными тегами. Не будет мешать другому base.html компоненты.

Применим логику к index.html

{% расширяется 'base.html' %}
{% заблокировать содержимое %}
<раздел класс ="текстовый центр контейнера" стиль="белый цвет">
<h1>Я шаблон индекса</h1>
<п>Я унаследовал Bootstrap и панель навигации от base.html.</п>
</div>
{% конечный блок%}

в index.html шаблон, используйте {% продлевать %} тег для расширения компонентов base.html. Внутри тегов блока {% заблокировать содержимое %}, напишите весь свой код.

в index.html шаблон, у вас есть H1 и элемент абзаца. Вы можете использовать теги шаблона внутри div для вызова переменных из вид функция.

Наследование тестового шаблона в браузере

Теперь вы можете запустить сервер. Сделав это, проверьте в браузере, index.html файл унаследовал элементы base.html. Это включает в себя ссылки Bootstrap и navbar.html шаблон.

index.html файл должен наследовать стили панели навигации и Bootstrap из базового шаблона. Если это так, вы правильно использовали наследование шаблонов. Без него вам пришлось бы добавлять панель навигации и ссылки Bootstrap там, где они вам нужны.

Кроме того, любые изменения, которые вы вносите в base.html будет отражаться во всех шаблонах, на которые он распространяется. Этот принцип важен при обработке ошибок. Вы можете легко определить шаблоны с ошибками.

Наследование шаблонов — один из многих способов, которыми Django реализует принцип «Не повторяйся» (DRY). Это значительно облегчит и упростит вашу разработку.

Почему вы должны использовать наследование шаблонов Django

Наследование шаблонов Django — одна из самых сложных функций. Это может занять некоторое время, чтобы понять это, но как только вы это сделаете, это сэкономит много усилий при разработке.

Наследование шаблонов позволяет вам совместно использовать код между родительским и дочерним шаблонами. Это гарантирует, что вы не будете писать повторяющийся код в своих шаблонах.

Наследование шаблонов важно в больших проектах Django. В таких случаях существует множество приложений и множество шаблонов для разработки. Родительские шаблоны дают вам большой контроль над другими компонентами приложения.

Изучив систему шаблонов Django, вы сможете получать удовольствие от написания чистого и мощного кода.