Выбор ответа Middle Django: устройство спрашивают часто обновлено

Порядок middleware

Вопрос

Почему AuthenticationMiddleware должен стоять в MIDDLEWARE после SessionMiddleware?

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

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

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

Коротко

Правильный ответ: Аутентификация берёт id пользователя из сессии, которую грузит SessionMiddleware. AuthenticationMiddleware заполняет request.user, читая данные из request.session, а сессию создаёт SessionMiddleware.

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

  1. Иначе Django не запустится из-за циклического импорта между этими модулями
  2. Порядок не важен: Django сам сортирует middleware по зависимостям
  3. Чтобы аутентификация выполнялась на выходе ответа, после записи сессии
  4. Аутентификация берёт id пользователя из сессии, которую грузит SessionMiddlewareправильный ответ

Разбор

AuthenticationMiddleware заполняет request.user, читая данные из request.session, а сессию создаёт SessionMiddleware. При обратном порядке сессии ещё нет, и Django выдаст ошибку проверки конфигурации. Middleware выполняются по порядку списка на входе и в обратном на выходе, поэтому порядок принципиален.

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

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