APIView < mixins < generics APIView < ViewSet
Mixins 를 상속함으로써 반복되는 내용을 많이 줄일 수 있었지만, 여러 상속으로 인한 가독성문제와 여전히 각 request method 에 대한 연결은 직접해줘야하는 번거로움이 있었습니다. 다행이 이러한 문제를 의식하고 DRF는 하나 이상의 Mixins 와 결합된 클래스 generics APIView 클래스를 제공하고 있습니다.
DRF에서 지원하는 generic APIView
💡 django-rest-framework/rest_framework/generics.py
generics.CreateAPIView : 생성
generics.ListAPIView : 목록
generics.RetrieveAPIView : 조회
generics.DestroyAPIView : 삭제
generics.UpdateAPIView : 수정
generics.RetrieveUpdateAPIView : 조회 / 수정
generics.RetrieveDestroyAPIView : 조회 / 삭제
generics.ListCreateAPIView : 목록 / 생성
generics.RetrieveUpdateDestroyAPIView : 조회 / 수정 / 삭제
mixins 를 썼을 때 보다 많이 간소화 되었지만 queryset 과 serializer_class 가 공통적임에도 불구하고 따로 기재하고 있는 모습이 보입니다
# views.py
from rest_framework import generics
from .models import Post
from .serializers import PostSerializer
class PostListGenericAPIView(generics.ListCreateAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer
class PostDetailGenericAPIView(generics.RetrieveUpdateDestroyAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer