
GenericViewSet은 Django REST Framework(DRF)에서 뷰셋을 보다 세밀하게 제어할 수 있도록 도와주는 기본 클래스입니다. 이 클래스는 다양한 믹스인(Mixin) 클래스와 결합하여 원하는 기능만을 구현할 수 있게 합니다.
POST 요청을 처리하여 새로운 객체를 생성하는 기능을 제공합니다.
클라이언트가 새로운 리소스를 생성할 수 있도록 API 엔드포인트를 만들 때 사용합니다.
메서드: create()
from rest_framework import mixins, viewsets
class MyCreateViewSet(mixins.CreateModelMixin, viewsets.GenericViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
GET 요청을 처리하여 단일 객체를 조회하는 기능을 제공합니다.
특정 리소스의 상세 정보를 제공하는 API 엔드포인트를 만들 때 사용합니다.
메서드: retrieve()
from rest_framework import mixins, viewsets
class MyRetrieveViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
PUT 및 PATCH 요청을 처리하여 객체를 업데이트하는 기능을 제공합니다.
리소스를 수정할 수 있도록 API 엔드포인트를 만들 때 사용합니다.
메서드: update(), partial_update()
from rest_framework import mixins, viewsets
class MyUpdateViewSet(mixins.UpdateModelMixin, viewsets.GenericViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
DELETE 요청을 처리하여 객체를 삭제하는 기능을 제공합니다.
리소스를 삭제할 수 있도록 API 엔드포인트를 만들 때 사용합니다.
메서드: destroy()
from rest_framework import mixins, viewsets
class MyDestroyViewSet(mixins.DestroyModelMixin, viewsets.GenericViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
GET 요청을 처리하여 객체 목록을 조회하는 기능을 제공합니다.
리소스 목록을 제공하는 API 엔드포인트를 만들 때 사용합니다.
메서드: list()
from rest_framework import mixins, viewsets
class MyListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
위의 믹스인들을 조합하여 필요한 기능만 포함하는 ViewSet을 만들 수 있습니다. 예를 들어, List와 Retrieve 기능만 제공하는 ViewSet은...
from rest_framework import mixins, viewsets
class MyCustomViewSet(mixins.ListModelMixin,
mixins.RetrieveModelMixin,
viewsets.GenericViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
CreateModelMixin: 새로운 객체 생성 (POST)
RetrieveModelMixin: 단일 객체 조회 (GET)
UpdateModelMixin: 객체 수정 (PUT, PATCH)
DestroyModelMixin: 객체 삭제 (DELETE)
ListModelMixin: 객체 목록 조회 (GET)