Что означает архитектурный паттерн MTV в Django?

«Что означает архитектурный паттерн MTV в Django?» — вопрос из категории Django, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

MTV (Model-Template-View) — это архитектурный паттерн, используемый в Django. Он является интерпретацией классического паттерна MVC (Model-View-Controller) и определяет разделение ответственности в веб-приложении. **Компоненты MTV:** 1. **Model (Модель)** - **Ответственность**: Структура данных и бизнес-логика. Это единственный и достоверный источник данных. - **Реализация**: Классы в `models.py`, которые наследуются от `django.db.models.Model`. Django ORM отображает эти классы на таблицы в базе данных. ```python # models.py class Article(models.Model): title = models.CharField(max_length=200) content = models.TextField() pub_date = models.DateTimeField(auto_now_add=True) ``` 2. **Template (Шаблон)** - **Ответственность**: Представление данных, то есть то, что видит пользователь. Это HTML-файлы с использованием Django Template Language (DTL) для вставки динамических данных. - **Реализация**: HTML-файлы с тегами `{{ variable }}` и `{% logic %}`. ```html

{{ article.title }}

{{ article.content }}

Опубликовано: {{ article.pub_date }} ``` 3. **View (Представление/Контроллер)** - **Ответственность**: Логика обработки запроса. View принимает HTTP-запрос, взаимодействует с Моделью для получения данных и передает эти данные в Шаблон для рендеринга ответа. - **Реализация**: Функции или классы в `views.py`. ```python # 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).