GenericViewSet mixin 믹스인 종류

요매·2024년 8월 28일

python-django

목록 보기
3/3

GenericViewSet은 Django REST Framework(DRF)에서 뷰셋을 보다 세밀하게 제어할 수 있도록 도와주는 기본 클래스입니다. 이 클래스는 다양한 믹스인(Mixin) 클래스와 결합하여 원하는 기능만을 구현할 수 있게 합니다.

CreateModelMixin

POST 요청을 처리하여 새로운 객체를 생성하는 기능을 제공합니다.

사용 시점

클라이언트가 새로운 리소스를 생성할 수 있도록 API 엔드포인트를 만들 때 사용합니다.
메서드: create()

from rest_framework import mixins, viewsets

class MyCreateViewSet(mixins.CreateModelMixin, viewsets.GenericViewSet):
    queryset = MyModel.objects.all()
    serializer_class = MyModelSerializer

RetrieveModelMixin

GET 요청을 처리하여 단일 객체를 조회하는 기능을 제공합니다.

사용 시점

특정 리소스의 상세 정보를 제공하는 API 엔드포인트를 만들 때 사용합니다.
메서드: retrieve()

from rest_framework import mixins, viewsets

class MyRetrieveViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet):
    queryset = MyModel.objects.all()
    serializer_class = MyModelSerializer

UpdateModelMixin

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

DestroyModelMixin

DELETE 요청을 처리하여 객체를 삭제하는 기능을 제공합니다.

사용 시점

리소스를 삭제할 수 있도록 API 엔드포인트를 만들 때 사용합니다.
메서드: destroy()

from rest_framework import mixins, viewsets

class MyDestroyViewSet(mixins.DestroyModelMixin, viewsets.GenericViewSet):
    queryset = MyModel.objects.all()
    serializer_class = MyModelSerializer

ListModelMixin

GET 요청을 처리하여 객체 목록을 조회하는 기능을 제공합니다.

사용 시점

리소스 목록을 제공하는 API 엔드포인트를 만들 때 사용합니다.
메서드: list()

from rest_framework import mixins, viewsets

class MyListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
    queryset = MyModel.objects.all()
    serializer_class = MyModelSerializer

Mixin 조합 예시

위의 믹스인들을 조합하여 필요한 기능만 포함하는 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)

profile
머리속에서 정리가 안돼...

0개의 댓글