ViewSet в DRF объединяет обработчики типичных действий API, например списка, создания, получения, обновления и удаления объектов. Router автоматически формирует URL-маршруты для зарегистрированных ViewSet.
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.
Оцени свой прогресс