Ответ
Django использует архитектурный паттерн MVT (Model-View-Template), который является его собственной интерпретацией классического паттерна MVC (Model-View-Controller).
Компоненты MVT:
- Model (Модель): Уровень данных. Отвечает за структуру данных, связь с базой данных и бизнес-логику. Реализуется через Django ORM.
- View (Представление): Уровень логики. Обрабатывает HTTP-запрос, взаимодействует с моделями и возвращает HTTP-ответ. В MVC эту роль выполняет Controller.
- Template (Шаблон): Уровень представления. Отвечает за генерацию пользовательского интерфейса (чаще всего HTML). Django использует встроенный язык шаблонов (Django Template Language).
Жизненный цикл запроса в Django:
- Пользователь отправляет запрос.
- URL-диспетчер (
urls.py
) находит соответствующее View для обработки запроса. - View выполняет логику: получает данные из Model, обрабатывает их.
- View передает данные в Template для рендеринга HTML-страницы.
- Сгенерированный HTTP-ответ отправляется пользователю.
Пример простого View:
# models.py
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
# views.py
from django.shortcuts import render
from .models import Article
def article_list(request):
articles = Article.objects.all()
# View передает данные (articles) в шаблон ('article_list.html')
return render(request, 'articles/article_list.html', {'articles': articles})