(https://www.django-rest-framework.org/api-guide/viewsets/#modelviewset)
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를 구성하는데 도움을 주지만 추상화의 정도가 너무 높습니다.
기본적인 것들을 배운 후에 이용하는 것이 좋습니다.
'Django, Flask > 🔫 Django REST framework (DRF)' 카테고리의 다른 글
pagination (0) | 2020.06.16 |
---|---|
DRF class based view : GenericView (0) | 2020.06.16 |
DRF serializers를 통해 장고 객체를 json으로 만들기 (1) | 2020.06.16 |
REST API 설계 원칙 (0) | 2020.06.16 |