Django: Шаблоны Jinja — Урок 4 (Создание сайта)

Создавайте шаблоны для многократного использования на своих сайтах. Домашнее задание, готовый код и другая полезная информация доступны на сайте 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 позволяет создавать более сложные и модульные шаблоны.

Что будем искать? Например,программа