Ответ
В Django **контекст** (context) — это **словарь** данных, который передаётся из **view** в **шаблон** для рендеринга. Его основная цель — сделать переменные доступными в шаблоне, обеспечивая разделение логики представления от данных.
**Почему это важно:** Контекст позволяет шаблонам динамически отображать информацию, подготовленную во view, без прямого доступа к логике приложения, что улучшает читаемость и поддерживаемость кода.
Обычно контекст передаётся как аргумент `context` в функции `render()`.
**Пример использования:**
```python
from django.shortcuts import render
def my_view(request):
data = {
'title': 'Главная страница',
'items': ['Item 1', 'Item 2', 'Item 3'],
'user_logged_in': True
}
return render(request, 'template.html', data)
```
В шаблоне `template.html` эти данные доступны по ключам словаря:
```django-html
{{ title }}
{% if user_logged_in %}
Добро пожаловать, {{ title }}!
{% else %}{{ title }}
{% endif %}Список элементов:
-
{% for item in items %}
- {{ item }} {% endfor %}
Ответ 18+ 🔞
А, слушай, про контекст в Джанге, да? Ну это ж, блядь, как мешок картошки, который ты тащишь из погреба на кухню!
Представь: у тебя есть **view** — это твой погреб, где вся логика, всякая хуйня готовится. А **шаблон** — это кухня, где всё это красиво разложат и подадут. Так вот **контекст** — это тот самый хуёвый мешок, в который ты накидал из погреба всё, что нужно на кухне: картошку, лук, ну и бутылку горилки, чтоб не скучно было.
По сути, это просто **словарь**, ёпта! Пары "ключ-значение". Кидаешь туда что угодно, а потом в шаблоне это достаёшь по имени, как из кармана зажигалку.
**Зачем это, спросишь?** Да чтобы, блядь, не устраивать бардак! Логика — отдельно, показ — отдельно. Шаблон не должен лезть в твою бизнес-логику с грязными руками, он должен только показывать то, что ему скормили. Чистота, блядь, архитектурная!
Передаётся это добро обычно третьим аргументом в `render()`. Смотри, как просто:
```python
from django.shortcuts import render
def my_view(request):
# Вот тут мы в погребе набираем мешок
data = {
'title': 'Главная страница',
'items': ['Item 1', 'Item 2', 'Item 3'],
'user_logged_in': True
}
# А тут тащим мешок на кухню (в шаблон)
return render(request, 'template.html', data)
```
А на кухне (в `template.html`) уже разворачиваем этот мешок и используем всё, что внутри:
```django-html
{{ title }}
{% if user_logged_in %}
Добро пожаловать, {{ title }}!
{% else %}{{ title }}
{% endif %}Список элементов:
-
{% for item in items %}
- {{ item }} {% endfor %}