Ответ
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).