Создавайте шаблоны для многократного использования на своих сайтах. Домашнее задание, готовый код и другая полезная информация доступны на сайте it-prager.com (ссылка в описании).
Создание приложения и подключение к сайту
Создайте новое приложение. Перейдите в папку проекта (например, Desktop/dj_green_simples/my_site) и выполните команду:
python manage.py startapp main
Подключите приложение к основному сайту. Откройте файл settings.py в папке my_site и добавьте ‘main’, в список INSTALLED_APPS. Неиспользуемые приложения можно удалить.
Далее, откройте файл urls.py. Замените path(‘example/’, include(‘example.urls’)) на путь к главной странице:
path('', include('main.urls')),
Создайте файл urls.py в приложении main. Можно скопировать его из основного приложения, удалив ненужные части (например, относящиеся к админ-панели). Подключите from django.urls import path и from . import views.
Создание представлений и шаблонов
В файле views.py приложения main создайте метод index:
from django.shortcuts import render
def index(request):
return render(request, 'main/index.html', {})
Создайте папку templates в приложении main, а внутри нее – папку main. В этой папке создайте файлы index.html и base.html. base.html содержит базовую HTML-разметку и стандартную структуру страницы, служащую оберткой для других шаблонов. Используйте синтаксис Jinja для блоков:
<!DOCTYPE html>
<html>
<head>
<title>Мой сайт</title>
<style>
body {
background-color: #ccc;
}
</style>
</head>
<body>
<h1>Заголовок страницы</h1>
<{% block content %}>
<{% endblock %}>
</body>
</html>
В index.html подключите base.html с помощью {% extends ‘base.html’ %} и добавьте контент внутри блока {% block content %}:
{% extends 'base.html' %}
{% block content %}
<p>Это основной контент страницы.</p>
{% endblock %}
Встраивание шаблонов с помощью include
Создайте папку include в папке templates/main и файл sample.html внутри нее:
<p>Это блок, который был встроен с помощью include.</p>
В index.html используйте {% include ‘main/include/sample.html’ %} для встраивания sample.html несколько раз на странице.
Запуск и проверка
Запустите локальный сервер командой python manage.py runserver. Откройте сайт в браузере и проверьте корректность отображения шаблонов. extends используется для наследования шаблонов, а include – для встраивания фрагментов. Django объединяет шаблоны из разных приложений, поэтому рекомендуется использовать структуру папок для предотвращения конфликтов имен.
В этом уроке мы научились использовать шаблонизатор Jinja для создания многократно используемых блоков и организации структуры сайта. Использование extends и include позволяет создавать более сложные и модульные шаблоны.