Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Django: drf, apiview, generic

Какие способы создания API существуют в Django REST Framework?

Вопрос проверяет понимание уровней абстракции в DRF и умение выбирать подходящий инструмент под задачу.

Короткий ответ

В DRF API можно создавать с помощью APIView, GenericAPIView, mixins, ViewSet и ModelViewSet. APIView дает полный контроль, но требует больше кода. Generic views и mixins уменьшают объем кода для CRUD. ViewSet и ModelViewSet позволяют быстро создавать REST API с автоматической маршрутизацией.

Длинный ответ

Django REST Framework предоставляет несколько уровней абстракции — от низкоуровневых до максимально автоматизированных.

Определение: Serializer — компонент, который преобразует модели в JSON и обратно.

1. APIView

Это самый базовый уровень.

Пример:

class UserView(APIView):
    def get(self, request):
        return Response({"status": "ok"})

Плюсы:

  • полный контроль,

  • гибкость.

Минусы:

  • больше кода.

2. GenericAPIView + mixins

Позволяет быстро реализовать стандартные операции.

Пример:

class UserListView(ListModelMixin, GenericAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer

Плюсы:

  • меньше кода,

  • контроль остается достаточно гибким.

3. ViewSet

Позволяет объединить несколько действий в один класс.

class UserViewSet(ViewSet):
    def list(self, request):
        ...

Плюсы:

  • удобная маршрутизация,

  • структурированность.

4. ModelViewSet

Самый высокий уровень абстракции:

  • list

  • create

  • retrieve

  • update

  • delete

Все реализовано автоматически.

5. Как выбирать

Практическое правило:

  1. Нестандартная логика → APIView

  2. CRUD с небольшой кастомизацией → Generic views

  3. Полноценный REST → ViewSet / ModelViewSet

Вывод

DRF предлагает несколько уровней абстракции, и выбор зависит от того, нужен ли полный контроль или скорость разработки.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • Django

    Django

Ключевые слова

#drf

#apiview

#generic

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.