Выбор ответа Middle Django: устройство спрашивают часто обновлено
Порядок middleware
Вопрос
Почему AuthenticationMiddleware должен стоять в MIDDLEWARE после SessionMiddleware?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Аутентификация берёт id пользователя из сессии, которую грузит SessionMiddleware. AuthenticationMiddleware заполняет request.user, читая данные из request.session, а сессию создаёт SessionMiddleware.
Варианты ответа
- Иначе Django не запустится из-за циклического импорта между этими модулями
- Порядок не важен: Django сам сортирует middleware по зависимостям
- Чтобы аутентификация выполнялась на выходе ответа, после записи сессии
- Аутентификация берёт id пользователя из сессии, которую грузит SessionMiddlewareправильный ответ
Разбор
AuthenticationMiddleware заполняет request.user, читая данные из request.session, а сессию создаёт SessionMiddleware. При обратном порядке сессии ещё нет, и Django выдаст ошибку проверки конфигурации. Middleware выполняются по порядку списка на входе и в обратном на выходе, поэтому порядок принципиален.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.