Ответ
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)
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
# views.py (View)
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)
{% for post in posts %}
<article>
<h2>{{ post.title }}</h2>
<p>{{ post.content }}</p>
</article>
{% endfor %}
Помимо MVT, Django также использует и другие паттерны:
- Singleton: Объект
settings
для глобальной конфигурации. - Observer: Механизм сигналов (
django.dispatch
) для реакции на события (например, после сохранения модели). - Factory: Встроенная система форм и аутентификации, которая создает объекты форм и пользователей.