Какой основной архитектурный паттерн использует Django?

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

Ответ

Django следует архитектурному паттерну **Model-View-Template (MVT)**, который является его собственной интерпретацией классического паттерна **Model-View-Controller (MVC)**. Компоненты MVT: * **Model**: Описывает структуру данных и взаимодействует с базой данных. Реализуется через ORM-модели в `models.py`. * **View**: Обрабатывает HTTP-запрос, содержит бизнес-логику и возвращает HTTP-ответ. Аналогичен **Controller** в MVC. Реализуется как функции или классы в `views.py`. * **Template**: Определяет структуру и внешний вид ответа, обычно в виде HTML-файла с использованием Django Template Language. Аналогичен **View** в MVC. **Пример:** `# models.py (Model)` ```python from django.db import models class Post(models.Model): title = models.CharField(max_length=100) content = models.TextField() ``` `# views.py (View)` ```python from django.shortcuts import render from .models import Post def post_list(request): posts = Post.objects.all() return render(request, 'blog/post_list.html', {'posts': posts}) ``` `# blog/post_list.html (Template)` ```html {% for post in posts %}

{{ post.title }}

{{ post.content }}

{% endfor %} ``` Помимо MVT, Django также использует и другие паттерны: - **Singleton**: Объект `settings` для глобальной конфигурации. - **Observer**: Механизм сигналов (`django.dispatch`) для реакции на события (например, после сохранения модели). - **Factory**: Встроенная система форм и аутентификации, которая создает объекты форм и пользователей.