✅ Решения — Урок 33

← К оглавлению урока | ← К заданиям

⚡ Ответы

  • Вопрос 1: 1-c, 2-a, 3-b, 4-d
  • Вопрос 2: a, b
  • Вопрос 3: c
  • Вопрос 4: d
  • Вопрос 5: a
  • Вопрос 6: a
  • Вопрос 7: c
  • Вопрос 8: a

Блок 1: Атрибуты lookup и методы GenericAPIView

Вопрос 1 — Ответ: 1-c, 2-a, 3-b, 4-d

  • 1 (lookup_field) → c«Указывает поле модели, которое будет использоваться для поиска объекта». lookup_field определяет, по какому полю модели DRF будет искать объект при обработке запросов к конкретному ресурсу.
  • 2 (lookup_url_kwarg) → a«Определяет параметр URL, который будет использоваться для получения значения lookup_field». lookup_url_kwarg связывает параметр из URL-шаблона (<str:genre_name>) с полем модели.
  • 3 (get_object) → b«Возвращает один объект из набора данных, используя параметры URL для фильтрации». Метод извлекает единственный объект и может быть переопределён для кастомной логики.
  • 4 (get_serializer_context) → d«Возвращает контекст, передаваемый сериализатору». Контекст позволяет передать в сериализатор дополнительную информацию: текущий запрос, параметры, флаги.

Вопрос 2 — Ответ: a, b

  • a) Верно — lookup_field действительно указывает поле модели для поиска.
  • b) Верно — lookup_url_kwarg определяет параметр URL для значения lookup_field.
  • c) Неверно — если lookup_field не задан, используется значение по умолчанию 'pk', а не lookup_url_kwarg.
  • d) Неверноlookup_url_kwarg не обязателен: если не задан, он равен значению lookup_field.

Вопрос 3 — Ответ: c

c) «Возвращает один объект из набора данных, используя параметры URL для фильтрации» — это основное назначение get_object(). Метод использует lookup_field и значение из URL для поиска конкретного объекта в queryset.

Варианты a) и b) описывают lookup_url_kwarg и lookup_field соответственно. Вариант d) описывает get_serializer_context().

Вопрос 4 — Ответ: d

d) «Возвращает контекст, передаваемый сериализатору» — точное назначение get_serializer_context(). Контекст — словарь с ключами request, format, view (и любыми добавленными пользователем данными).

Блок 2: filter_backends

Вопрос 5 — Ответ: a

a) «Определяет, какие фильтры будут применяться к данным в представлении» — основная функция filter_backends. Это список классов фильтрации, которые DRF последовательно применяет к queryset.

  • b) Неверно — количество элементов на странице настраивается через pagination_class и page_size.
  • c) Неверно — filter_backends применяет фильтры к уже выбранным данным, а не управляет базой данных напрямую.
  • d) Неверно — формат ответа задаётся через renderer_classes.

Вопрос 6 — Ответ: a

a) search_fields и ordering_fieldssearch_fields определяет поля для текстового поиска (параметр ?search=), ordering_fields — поля для сортировки (параметр ?ordering=).

Вопрос 7 — Ответ: c

c) filterset_fields — атрибут, который определяет список полей модели для точной фильтрации через DjangoFilterBackend. Клиент передаёт ?field=value для фильтрации по этим полям.

get_queryset() (вариант d) — это метод для возврата базового queryset, но он не реализует автоматическую фильтрацию сам по себе.

Вопрос 8 — Ответ: a

a) «Указывает поля для сортировки данных» — параметр ?ordering=field указывает, по какому полю сортировать результаты. Минус перед именем поля (?ordering=-price) означает сортировку по убыванию.