Что такое контекст в Django views?

Ответ

В Django контекст (context) — это словарь данных, который передаётся из view в шаблон для рендеринга. Его основная цель — сделать переменные доступными в шаблоне, обеспечивая разделение логики представления от данных.

Почему это важно: Контекст позволяет шаблонам динамически отображать информацию, подготовленную во view, без прямого доступа к логике приложения, что улучшает читаемость и поддерживаемость кода.

Обычно контекст передаётся как аргумент context в функции render().

Пример использования:

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 эти данные доступны по ключам словаря:

<!DOCTYPE html>
<html>
<head>
    <title>{{ title }}</title>
</head>
<body>
    {% if user_logged_in %}
        <h1>Добро пожаловать, {{ title }}!</h1>
    {% else %}
        <h1>{{ title }}</h1>
    {% endif %}

    <h2>Список элементов:</h2>
    <ul>
    {% for item in items %}
        <li>{{ item }}</li>
    {% endfor %}
    </ul>
</body>
</html>

Контекстные процессоры: Это функции, которые автоматически добавляют общие данные (например, объект request, информацию о текущем пользователе user) в контекст всех шаблонов. Они настраиваются в settings.TEMPLATES.OPTIONS.context_processors и помогают избежать дублирования кода для передачи одних и тех же данных в каждый view.