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