Назад к вопросам
Middle
97
questionbank

Что такое контекстный процессор в Django?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Контекстный процессор в Django — это вызываемая функция (callback function), которая принимает HTTP-запрос в качестве аргумента и возвращает словарь переменных. Этот словарь добавляется к контексту каждого шаблона, обрабатываемого этим запросом.

Они используются для добавления общих данных ко всем шаблонам без необходимости явно передавать эти данные в каждом представлении.

Наиболее распространенные примеры использования:

  • Добавление данных аутентифицированного пользователя.
  • Добавление настроек сайта (например, название, домен).
  • Добавление информации о текущем запросе (например, путь).

Контекстные процессоры подключаются в настройках Django:

# settings.py
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                # Сюда добавляются пользовательские процессоры
                #'my_app.context_processors.my_custom_processor',
            ],
        },
    },
]

Пример пользовательского контекстного процессора:

# my_app/context_processors.py

def my_custom_processor(request):
    # Функция принимает request
    return {
        'site_name': 'My Awesome Site',  # Возвращает словарь
        'current_year': 2023,
    }

После подключения в settings.py, переменные site_name и current_year будут доступны в любом шаблоне:

<!-- my_template.html -->
<p>Добро пожаловать на {{ site_name }}!</p>
<p>&copy; {{ current_year }}</p>