Ответ вслух Junior Django: устройство спрашивают часто обновлено

Что происходит при запросе к Django

Вопрос

Расскажите, что происходит, когда пользователь открывает страницу на Django.

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

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

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

Коротко

Образцовый ответ: «Запрос приходит через nginx в gunicorn или uvicorn, и обработчик Django превращает его в объект HttpRequest.

Что должно прозвучать в ответе

  • Сервер приложений создаёт `HttpRequest` через WSGI или ASGI

  • Middleware по списку: безопасность, сессия, CSRF, аутентификация

  • URL-резолвер находит вьюху и параметры по urlpatterns

  • Вьюха работает с ORM и шаблоном, возвращает HttpResponse

  • Ответ проходит middleware в обратном порядке

  • Исключения превращаются в 404 или 500 через обработчики

Что могут спросить следом

  • Где бы вы добавили замер времени всех запросов?
  • Что будет, если middleware вернёт ответ сам?

Разбор

Образцовый ответ: «Запрос приходит через nginx в gunicorn или uvicorn, и обработчик Django превращает его в объект HttpRequest. Дальше запрос проходит middleware из списка MIDDLEWARE сверху вниз: SecurityMiddleware может перенаправить на HTTPS, SessionMiddleware загружает сессию, CsrfViewMiddleware проверяет токен для небезопасных методов, AuthenticationMiddleware кладёт пользователя в request.user. Любой middleware может сам вернуть ответ, и тогда до вьюхи запрос не дойдёт. Затем URL-резолвер сопоставляет путь с urlpatterns, конвертеры приводят параметры к нужным типам, и вызывается вьюха. Она достаёт данные через ORM, рендерит шаблон или собирает JSON и возвращает HttpResponse. Ответ идёт обратно через middleware снизу вверх, там, например, ставятся заголовки и cookie. Если вьюха бросила Http404 или PermissionDenied, Django превратит их в соответствующие ответы, а необработанное исключение станет 500 и попадёт в логи. Замер времени всех запросов я бы сделал своим middleware».

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

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