Ответ
MTV (Model-Template-View) — это архитектурный паттерн, используемый в Django. Он является интерпретацией классического паттерна MVC (Model-View-Controller) и определяет разделение ответственности в веб-приложении.
Компоненты MTV:
-
Model (Модель)
- Ответственность: Структура данных и бизнес-логика. Это единственный и достоверный источник данных.
- Реализация: Классы в
models.py, которые наследуются отdjango.db.models.Model. Django ORM отображает эти классы на таблицы в базе данных.# models.py class Article(models.Model): title = models.CharField(max_length=200) content = models.TextField() pub_date = models.DateTimeField(auto_now_add=True)
-
Template (Шаблон)
- Ответственность: Представление данных, то есть то, что видит пользователь. Это HTML-файлы с использованием Django Template Language (DTL) для вставки динамических данных.
- Реализация: HTML-файлы с тегами
{{ variable }}и{% logic %}.<!-- article_detail.html --> <h1>{{ article.title }}</h1> <p>{{ article.content }}</p> <small>Опубликовано: {{ article.pub_date }}</small>
-
View (Представление/Контроллер)
- Ответственность: Логика обработки запроса. View принимает HTTP-запрос, взаимодействует с Моделью для получения данных и передает эти данные в Шаблон для рендеринга ответа.
- Реализация: Функции или классы в
views.py.# views.py from django.shortcuts import render from .models import Article
def article_detail(request, article_id): article = Article.objects.get(pk=article_id) return render(request, 'article_detail.html', {'article': article})
Таким образом, Django разделяет логику работы с данными (Model), их отображение (Template) и логику обработки запросов (View).