Выбор ответа Middle Django: устройство обновлено
Когда вызывается __init__ у middleware
Вопрос
Когда вызывается __init__(self, get_response) у middleware нового стиля?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Один раз при старте, когда строится цепочка. Django создаёт экземпляры middleware один раз при загрузке обработчика, поэтому в init делают разовую настройку, а логику запроса пишут в call.
Варианты ответа
- На каждый запрос перед вызовом
__call__ - Один раз при старте, когда строится цепочкаправильный ответ
- При первом запросе каждого нового пользователя
- При каждом вызове
get_responseиз вьюхи
Разбор
Django создаёт экземпляры middleware один раз при загрузке обработчика, поэтому в __init__ делают разовую настройку, а логику запроса пишут в __call__. Хранить в self данные конкретного запроса нельзя: экземпляр общий для всех запросов и потоков воркера.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.