По порядку Middle Django REST Framework обновлено

Порядок обработки запроса во вьюсете DRF

Вопрос

Расставьте шаги обработки PATCH /orders/5/ в ModelViewSet по порядку.

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

Расставьте шаги по порядку стрелками.

  1. 1
    Троттлинг
  2. 2
    Валидация сериализатора с partial=True
  3. 3
    Проверка has_permission у permission-классов
  4. 4
    get_object(): поиск в get_queryset() и has_object_permission
  5. 5
    Аутентификация: определяется request.user
  6. 6
    perform_update сохраняет объект, ответ сериализуется
Показать ответ и разбор

Коротко

В APIView.initial() DRF выполняет аутентификацию, проверку прав и троттлинг. Затем действие вызывает getobject() с объектной проверкой, валидирует данные и сохраняет.

Правильный порядок

  1. 1
    Аутентификация: определяется request.user
  2. 2
    Проверка has_permission у permission-классов
  3. 3
    Троттлинг
  4. 4
    get_object(): поиск в get_queryset() и has_object_permission
  5. 5
    Валидация сериализатора с partial=True
  6. 6
    perform_update сохраняет объект, ответ сериализуется

Разбор

В APIView.initial() DRF выполняет аутентификацию, проверку прав и троттлинг. Затем действие вызывает get_object() с объектной проверкой, валидирует данные и сохраняет. Если объект не найден в отфильтрованном get_queryset, будет 404 ещё до валидации.

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

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