본문으로 바로가기

 

 

(https://www.django-rest-framework.org/api-guide/viewsets/#modelviewset)

 

Viewsets - Django REST framework

viewsets.py After routing has determined which controller to use for a request, your controller is responsible for making sense of the request and producing the appropriate output. — Ruby on Rails Documentation Django REST framework allows you to combine

www.django-rest-framework.org

 

Viewset 중 ModelViewSet을 이용해볼까 합니다.

 

viewsets는 그냥 다음과 같이 사용하면 됩니다. app 단위에서 따로 viewsets.py를 만들어줘서 정의했습니다.

# rooms/viewsets.py

from rest_framework import viewsets
from .models import Room
from .serializers import BigRoomSerializer


class RoomViewsets(viewsets.ModelViewSet):

    queryset = Room.objects.all()
    serializer_class = BigRoomSerializer

 

viewset을 이용하려면 urls.py에도 손을 좀 봐야 합니다.

 

일반적으로 class based view는 urls.py를 다음과 같이 설정했습니다.

from django.urls import path, include
from . import views

app_name = "rooms"

urlpatterns = [
    path("list/", views.ListRoomsView.as_view()),
    path("<int:pk>/", views.SeeRoomView.as_view()),
]

 

그러나 viewset을 이용할 때는 다음과 같이 사용합니다.

from rest_framework.routers import DefaultRouter
from django.urls import path, include
from . import viewsets

app_name = "rooms"

router = DefaultRouter()
router.register("", viewsets.RoomViewsets, basename="rooms")

urlpatterns = router.urls

 

작성한 후 살펴보면, 자동으로 pagination, POST 폼 등이 생성된 것을 볼 수 있습니다. 쉽게 말해 자동으로 CURD를 모두 구현해주었습니다.

 

ViewSet을 이용하는 것은 쉽고 빠르게 rest api를 구성하는데 도움을 주지만 추상화의 정도가 너무 높습니다.

기본적인 것들을 배운 후에 이용하는 것이 좋습니다.


darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체