Выбор ответа Middle Django: устройство обновлено

Когда вызывается __init__ у middleware

Вопрос

Когда вызывается __init__(self, get_response) у middleware нового стиля?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Один раз при старте, когда строится цепочка. Django создаёт экземпляры middleware один раз при загрузке обработчика, поэтому в init делают разовую настройку, а логику запроса пишут в call.

Варианты ответа

  1. На каждый запрос перед вызовом __call__
  2. Один раз при старте, когда строится цепочкаправильный ответ
  3. При первом запросе каждого нового пользователя
  4. При каждом вызове get_response из вьюхи

Разбор

Django создаёт экземпляры middleware один раз при загрузке обработчика, поэтому в __init__ делают разовую настройку, а логику запроса пишут в __call__. Хранить в self данные конкретного запроса нельзя: экземпляр общий для всех запросов и потоков воркера.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.