Django REST Framework ViewSet

Choi Yeonung·2021년 10월 31일
0

Django REST Framework

목록 보기
3/3
post-thumbnail

GenericAPIView로 CRUD를 구현한 코드를 보자.

# 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()),
]

queryset과 serializer_class를 정의하는 부분이 중복된다. ViewSet은 이를 통합한다.

ViewSet을 이용한 코드는 다음과 같다. urls.py에서 라우팅 하는 부분 또한 다름에 유의하자.

# views.py
from rest_framework import viewsets
from .models import Quiz
from .serializers import QuizSerializer

class QuizViewSet(viewsets.ModelViewSet):
    queryset = Quiz.objects.all()
    serializer_class = QuizSerializer

# urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import QuizViewSet

router = DefaultRouter()
router.register('', QuizViewSet)

urlpatterns = [
    path("", include(router.urls)),
]

이제 중복 코드가 없다. CRUD는 위처럼 ViewSet으로 간단하게 구현할 수 있다.

profile
Code as a hobby

0개의 댓글