FBV, CBV에 관한 내용을 보고 싶다면 이전 포스트로 가면 된다.
GenericAPIView를 사용하면 REST API에서 자주 사용되는 행위를 FBV나 CBV보다 더 간단하게 구현할 수 있다.
다음은 CRUD를 GenericAPIView를 이용해 짠 코드다.
# views.py
from rest_framework import generics
from .models import Quiz
from .serializers import QuizSerializer
class QuizListCreateView(generics.ListCreateAPIView):
queryset = Quiz.objects.all()
serializer_class = QuizSerializer
class QuizRetrieveUpdateDestroyView(generics.RetrieveUpdateDestroyAPIView):
queryset = Quiz.objects.all()
serializer_class = QuizSerializer
# urls.py
from django.urls import path
from .views import QuizListCreateView, QuizRetrieveUpdateDestroyView
urlpatterns = [
path("", QuizListCreateView.as_view()),
path("<int:pk>/", QuizRetrieveUpdateDestroyView.as_view()),
]
HTTP method별 행위, response가 기본적으로 정의되어 있어 구현할 필요가 없다. 정말 아름답지 않은가?
만약 행위를 직접 구현하고 싶다면 overriding을 이용하면 된다. 공식 문서에 자세한 내용이 있다.
GenericAPIView에 관한 공식 문서는 다음을 참조하자.
https://www.django-rest-framework.org/api-guide/generic-views/