Ответ
Архитектура Django основана на паттерне **Model-View-Template (MVT)**, который является вариацией классического MVC. Каждый компонент выполняет свою четкую роль в обработке HTTP-запроса.
1. **Models (`models.py`)**
- **Роль:** Уровень данных (буква **M** в MVT). Модели описывают структуру данных приложения в виде Python-классов. Django ORM (Object-Relational Mapper) использует их для создания таблиц в базе данных и взаимодействия с ними (создание, чтение, обновление, удаление записей).
- **Пример:**
```python
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=200)
price = models.DecimalField(max_digits=10, decimal_places=2)
```
2. **Views (`views.py`)**
- **Роль:** Уровень бизнес-логики (буква **V** в MVT). Представление — это функция или класс, который принимает HTTP-запрос, взаимодействует с моделями для получения или изменения данных и возвращает HTTP-ответ, обычно передавая данные в шаблон.
- **Пример:**
```python
from django.shortcuts import render
from .models import Product
def product_list(request):
products = Product.objects.all()
return render(request, 'shop/product_list.html', {'products': products})
```
3. **Templates (`*.html`)**
- **Роль:** Уровень представления (буква **T** в MVT). Шаблоны отвечают за генерацию HTML-страницы, которую увидит пользователь. Они используют специальный синтаксис Django Template Language (DTL) для отображения данных, переданных из представления.
- **Пример:**
```html
Список продуктов
-
{% for product in products %}
- {{ product.name }} - {{ product.price }} руб. {% endfor %}