PRO

Что такое ViewSet и Router в DRF?

ViewSet в DRF объединяет обработчики типичных действий API, например списка, создания, получения, обновления и удаления объектов. Router автоматически формирует URL-маршруты для зарегистрированных ViewSet.
Подробный ответ

Что такое ViewSet

ViewSet — это класс DRF, который группирует логику работы с ресурсом в одном месте. Например, ModelViewSet уже содержит действия для списка объектов, создания, получения одной записи, обновления и удаления.

from rest_framework.viewsets import ModelViewSet
from .models import Article
from .serializers import ArticleSerializer


class ArticleViewSet(ModelViewSet):
    queryset = Article.objects.all()
    serializer_class = ArticleSerializer

Что такое Router

Router автоматически создаёт URL-маршруты для ViewSet. Благодаря этому не нужно вручную писать отдельный путь для списка статей, получения статьи по id, обновления и удаления.

from django.urls import include, path
from rest_framework.routers import DefaultRouter
from .views import ArticleViewSet

router = DefaultRouter()
router.register('articles', ArticleViewSet, basename='article')

urlpatterns = [
    path('', include(router.urls)),
]

Какие endpoints появятся

Для такого ViewSet router обычно создаст маршруты вроде /articles/ для списка и создания, а также /articles/<pk>/ для получения, обновления и удаления конкретной статьи.

Как ответить на собеседовании

ViewSet объединяет CRUD-логику одного API-ресурса, а Router автоматически создаёт URL для стандартных действий ViewSet. Для типичного CRUD API я часто использую ModelViewSet вместе с DefaultRouter.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге