Ответ
Django использует архитектурный шаблон MVT (Model-View-Template), который является его собственной интерпретацией классического MVC (Model-View-Controller). Разница заключается в распределении обязанностей.
Соответствие компонентов:
- Model (Модель): Полностью совпадает с
Modelв MVC. Отвечает за структуру данных, валидацию и бизнес-логику. - View (Представление): В Django это аналог
Controllerв MVC. Функция или класс, который принимает HTTP-запрос, выполняет необходимую логику (например, получает данные из модели) и возвращает HTTP-ответ, часто используя шаблон для рендеринга. - Template (Шаблон): Это аналог
Viewв MVC. Отвечает исключительно за представление данных (HTML-разметка).
Сравнительная таблица:
| Обязанность | Классический MVC | Django (MVT) |
|---|---|---|
| Работа с данными | Model |
Model |
| Обработка запроса | Controller |
View |
| Отображение данных | View |
Template |
Пример кода:
# models.py (Model)
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
# views.py (View, аналог Controller)
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, 'articles/detail.html', {'article': article})
# articles/detail.html (Template, аналог View)
'''
<h1>{{ article.title }}</h1>
<p>{{ article.content }}</p>
'''
Таким образом, Django называет свою архитектуру MVT, чтобы подчеркнуть, что логику обработки запроса выполняет View, а за отображение отвечает Template.