Django — это популярный фреймворк для создания веб-приложений на языке Python. Он предоставляет широкий спектр инструментов и библиотек для упрощения создания и развертывания веб-приложений, включая систему шаблонов.
Шаблоны Django — это файлы, которые определяют, как должен выглядеть HTML-код страниц веб-приложения. Они используют специальный язык шаблонов, который позволяет вставлять данные из контекста приложения, использовать циклы, условные операторы и другие конструкции.
Вот пример базового шаблона Django:
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}My Website{% endblock %}</title>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
Этот шаблон определяет базовый HTML-код для страниц веб-приложения. Он включает блоки {% block %}
, которые могут быть переопределены в наследующих шаблонах или включаемых шаблонах.
Например, вот как может выглядеть наследующий шаблон, который наследует базовый шаблон и переопределяет блоки title
и content
:
{% extends "base.html" %}
{% block title %}My Blog{% endblock %}
{% block content %}
<h1>My Blog</h1>
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.body }}</p>
{% endfor %}
{% endblock %}
Этот шаблон наследует базовый шаблон, переопределяет блок title
и определяет новый блок `content`, который использует цикл for
для вывода списка постов.
Шаблоны Django также поддерживают включаемые шаблоны, которые можно использовать для повторного использования частей кода. Вот пример включаемого шаблона для вывода формы входа:
{% include "login_form.html" %}
Этот код включает шаблон login_form.html
в текущий шаблон.
Шаблоны Django позволяют легко создавать красивые и мощные веб-приложения, используя мощную систему шаблонов и другие инструменты фреймворка.
Язык шаблонов Django
Язык шаблонов Django — это специальный язык программирования, который позволяет создавать шаблоны для веб-страниц в приложении Django. Он предназначен для того, чтобы помочь разработчикам создавать динамические и интерактивные веб-страницы без необходимости писать большой объем HTML-кода вручную.
В языке шаблонов Django есть несколько конструкций, которые позволяют вставлять данные из контекста приложения, использовать циклы, условные операторы и другие конструкции. Он также поддерживает наследование шаблонов, что позволяет уменьшить дублирование кода и повторное использование уже существующих шаблонов.
Основные конструкции языка шаблонов
Основные конструкции языка шаблонов Django включают следующие:
- {{ переменная }} — Это конструкция используется для вывода значения переменной на странице. Внутри двойных фигурных скобок можно указать имя переменной из контекста приложения.
- {% тег %} — Это конструкция используется для выполнения различных действий на странице, таких как управление потоком исполнения, установка значений переменных и т.д. Внутри фигурных скобок можно указать имя тега и его аргументы.
- {% for элемент in список %} … {% endfor %} — Эта конструкция используется для выполнения цикла. Она позволяет перебрать все элементы в списке и выполнить некоторые действия с каждым из них.
- {% if условие %} … {% endif %} — Эта конструкция используется для выполнения условного оператора. Она позволяет выполнить определенные действия только если заданное условие истинно.
- {% extends «базовый_шаблон.html» %} — Эта конструкция используется для наследования от другого шаблона. Она позволяет создать новый шаблон, который наследует элементы и стили из базового шаблона.
- {% block имя_блока %} … {% endblock %} — Эта конструкция используется для создания блока, который может быть переопределен в наследуемом шаблоне. Она позволяет создавать более гибкие шаблоны, которые можно настраивать под конкретные нужды.
- {% url ‘имя_представления’ аргументы_url %} — Эта конструкция используется для создания ссылок на другие страницы в приложении. Она позволяет автоматически создать URL-адрес для заданного представления и передать в него нужные аргументы.
- {% include «шаблон.html» %} — Эта конструкция используется для включения содержимого другого шаблона в текущий шаблон. Она позволяет использовать общие элементы интерфейса на нескольких страницах приложения, без необходимости дублировать код.
- {{ value|фильтр }} — Эта конструкция используется для применения фильтра к значению переменной, которая выводится на странице. Фильтры позволяют изменять формат, размер и тип выводимого значения.
- {% csrf_token %} — Эта конструкция используется для вставки маркера CSRF в форму. Она позволяет защитить приложение от атак, связанных с подделкой межсайтовых запросов.
- {% with имя_переменной=значение %} … {% endwith %} — Эта конструкция используется для создания временных переменных в шаблоне. Она позволяет сохранить значение переменной в течение выполнения блока, после чего переменная удаляется.
- {% comment «Комментарий» %} — Эта конструкция используется для добавления комментариев в шаблон. Она позволяет оставлять заметки для других разработчиков, не влияя на выводимую на странице информацию.
Использование переменных в шаблоне Django
Переменные в шаблоне Django используются для передачи данных из представления в шаблон, чтобы отобразить их на странице. Для использования переменных в шаблоне Django, в представлении нужно определить контекст, который содержит словарь с парами «ключ-значение», где ключи — имена переменных, а значения — данные, которые нужно отобразить на странице.
Например, в представлении можно определить словарь контекста следующим образом:
def my_view(request):
context = {
'name': 'John',
'age': 25,
'favorite_colors': ['red', 'green', 'blue']
}
return render(request, 'my_template.html', context)
Затем, в шаблоне можно использовать эти переменные, обращаясь к ним через двойные фигурные скобки {{ }}. Например, чтобы отобразить имя и возраст на странице, можно написать следующий код в шаблоне:
<h1>{{ name }}</h1>
<p>Возраст: {{ age }}</p>
Для отображения повторяющихся элементов, используется конструкция for
. Например, чтобы отобразить список любимых цветов, можно написать следующий код в шаблоне:
<ul>
{% for color in favorite_colors %}
<li>{{ color }}</li>
{% endfor %}
</ul>
Также, в шаблонах можно использовать операторы if
и else
для условного отображения данных. Например, чтобы отобразить сообщение, если пользователь совершеннолетний, можно написать следующий код в шаблоне:
{% if age >= 18 %}
<p>Вы совершеннолетний</p>
{% else %}
<p>Вы несовершеннолетний</p>
{% endif %}
Связь шаблонов и представлений
В Django шаблоны могут быть использованы как на уровне проекта, так и на уровне приложения. Шаблоны на уровне проекта хранятся в директории templates
в корневой папке проекта, а на уровне приложения — в директории templates
внутри папки приложения.
Чтобы связать шаблон с представлением на уровне проекта, нужно в представлении использовать функцию render
из модуля django.shortcuts
. Функция render
принимает три параметра: объект запроса request
, имя шаблона и контекст. Например:
from django.shortcuts import render
def my_view(request):
context = {'message': 'Hello, world!'}
return render(request, 'my_template.html', context)
Здесь мы передаем в контекст словарь, содержащий переменную `message` со значением Hello, world!
, и имя шаблона my_template.html
. Функция render
найдет файл шаблона my_template.html
в директории templates
на уровне проекта и подставит в него переменную message
.
Если вы хотите связать шаблон с представлением на уровне приложения, то вам нужно создать директорию templates
внутри папки вашего приложения и поместить туда файлы шаблонов. Затем в вашем представлении вы можете использовать функцию render
с указанием пути к шаблону относительно директории templates
вашего приложения. Например:
from django.shortcuts import render
def my_view(request):
context = {'message': 'Hello, world!'}
return render(request, 'my_app/my_template.html', context)
Здесь мы передаем в контекст словарь, содержащий переменную message
со значением Hello, world!
, и имя шаблона my_template.html
, расположенного в директории templates
на уровне приложения my_app
.
Таким образом, чтобы использовать шаблоны в Django и связать их с представлениями, необходимо создать директории templates
на нужном уровне (проекта или приложения), поместить файлы шаблонов в соответствующие директории, и использовать функцию render
в представлениях, передавая ей имя шаблона и контекст.
Задания на закрепление
Задание 1. Создайте веб-страницу-шаблон со списком любимых книг. Список книг должен определяться через контекст представления (view).
Задание на использование шаблона проекта:
Вам нужно создать простую веб-страницу, которая будет выводить список любимых книг. Создайте шаблон books.html
в директории templates
на уровне проекта и добавьте следующий код:
<!DOCTYPE html>
<html>
<head>
<title>Список любимых книг</title>
</head>
<body>
<h1>Список любимых книг:</h1>
<ul>
{% for book in books %}
<li>{{ book }}</li>
{% endfor %}
</ul>
</body>
</html>
Затем создайте представление books_view
в вашем приложении. В данном случае, мы будем использовать функциональное представление:
from django.shortcuts import render
def books_view(request):
books = ['Война и мир', 'Преступление и наказание', 'Анна Каренина']
context = {'books': books}
return render(request, 'books.html', context)
В данном случае, мы создаем список книг в представлении, добавляем его в контекст и передаем его в функцию render
вместе с именем шаблона. Когда мы перейдем на страницу books
, Django найдет шаблон books.html
в директории templates
на уровне проекта и подставит переменную books
в список.
Задание2. Вам нужно создать веб-страницу, которая будет выводить сообщение приветствия. Используйте отдельное приложение для создания шаблона и представления.
Создайте шаблон welcome.html
в директории templates
внутри вашего приложения и добавьте следующий код:
<!DOCTYPE html>
<html>
<head>
<title>Добро пожаловать!</title>
</head>
<body>
<h1>{{ message }}</h1>
</body>
</html>
Затем создайте представление welcome_view
в вашем приложении:
from django.shortcuts import render
def welcome_view(request):
message = 'Добро пожаловать на наш сайт!'
context = {'message': message}
return render(request, 'welcome.html', context)
Здесь мы создаем переменную message
с сообщением приветствия, добавляем ее в контекст и передаем его в функцию render
вместе с именем шаблона. Когда мы перейдем на страницу welcome
, Django найдет шаблон welcome.html
в директории templates
на уровне приложения и подставит переменную message
в заголовок H1.
Индивидуальное и групповое обучение «Python Junior»
Если вы хотите научиться программировать на Python, могу помочь. Запишитесь на мой курс «Python Junior» и начните свой путь в мир ИТ уже сегодня!
Контакты
Для получения дополнительной информации и записи на курсы свяжитесь со мной:
Телеграм: https://t.me/Vvkomlev
Email: victor.komlev@mail.ru
Объясняю сложное простыми словами. Даже если вы никогда не работали с ИТ и далеки от программирования, теперь у вас точно все получится! Проверено десятками примеров моих учеников.
Гибкий график обучения. Я предлагаю занятия в мини-группах и индивидуально, что позволяет каждому заниматься в удобном темпе. Вы можете совмещать обучение с работой или учебой.
Практическая направленность. 80%: практики, 20% теории. У меня множество авторских заданий, которые фокусируются на практике. Вы не просто изучаете теорию, а сразу применяете знания в реальных проектах и задачах.
Разнообразие учебных материалов: Теория представлена в виде текстовых уроков с примерами и видео, что делает обучение максимально эффективным и удобным.
Понимаю, что обучение информационным технологиям может быть сложным, особенно для новичков. Моя цель – сделать этот процесс максимально простым и увлекательным. У меня персонализированный подход к каждому ученику. Максимальный фокус внимания на ваши потребности и уровень подготовки.