Какую роль выполняет Template в архитектуре Django MTV?

Ответ

В архитектуре Django MTV (Model-Template-View) Template (Шаблон) — это компонент, отвечающий за представление данных и генерацию пользовательского интерфейса, чаще всего HTML-страниц.

Его основная задача — отделить логику обработки данных (View) от их визуального отображения. Это позволяет frontend-разработчикам и дизайнерам работать над внешним видом, не вникая в Python-код.

Шаблоны используют специальный синтаксис Django Template Language (DTL) для вставки динамических данных:

  • Переменные: {{ user.name }} — для вывода значений.
  • Теги: {% for item in item_list %} — для управляющих конструкций, таких как циклы и условия.
  • Фильтры: {{ post.created_at|date:"D d M Y" }} — для форматирования переменных.

Пример шаблона:

<!DOCTYPE html>
<html>
<head>
    <title>{{ page_title }}</title>
</head>
<body>
    <h1>Статьи</h1>
    <ul>
        {% for article in articles %}
            <li>{{ article.title }} - опубликовано {{ article.pub_date|date:"d.m.Y" }}</li>
        {% empty %}
            <li>Статей пока нет.</li>
        {% endfor %}
    </ul>
</body>
</html>

Ключевые преимущества использования шаблонов:

  1. Разделение ответственностей: Backend-логика остается во views.py, а верстка — в .html файлах.
  2. Повторное использование: Механизмы наследования ({% extends 'base.html' %}) и включения ({% include 'sidebar.html' %}) позволяют избежать дублирования кода.
  3. Безопасность: Django автоматически экранирует переменные, предотвращая XSS-атаки.