99.10.11
[Django] ViewSet 본문
viewset과 view의 차이점:
별다른 커스터마이징된 동작이 없고 CRUD를 다 한다면 고민할 것 없이 viewsets을 쓰면 됩니다. CRUD 중 몇 개만 허용하거나 get, post 메소드에 간단한 커스터마이징 코드를 넣고 싶다면 @api_view 데코레이터나 generic.*을 쓰면 좋습니다. 그게 아니라 모든 동작을 다 커스터마이징하고 싶다면 APIView를 쓰면 됩니다.
헷갈린다면 generic.*이 결국 APIView를 상속받아 만들어진 클래스라는 걸 생각하면 쉽습니다. APIView가 포유류라고 가정하고 generic.*이 인간이라고 한다면 ‘검투사’ 캐릭터를 만들기 위해 포유류를 상속받는 것보다 인간을 상속 받는게 할 일이 휠씬 줄겠지요. 포유류를 상속 받는다면 인간의 속성을 하나 하나 내가 스스로 지정하고 만들어줘야 할겁니다. 이미 잘 만들어진 게 있는데도요. 시간도 많이 들고, 코드도 많아지고, 빠뜨리거나 실수도 늘겁니다. 검증도 필요할것이고요.
from rest_framework import viewsets
class HelloViewSet(viewsets.ViewSet):
"""Test API ViewSet"""
def list(self, request):
"""Return a hello message."""
a_viewset = [
'Uses actions (list, create, retrieve, update, partial_update)',
'Automatically maps to URLS using Routers',
'Provides more functionality with less code',
]
return Response({'message': 'Hello!', 'a_viewset': a_viewset})
'Backend REST API with Python & Django' 카테고리의 다른 글
HTTP 메소드 (0) | 2022.02.09 |
---|---|
[Django] Serializer (0) | 2022.02.09 |
[Django] Database connection error 두가지 (0) | 2022.02.08 |
[Django] urls.py (0) | 2022.02.08 |
[Djano] API View (0) | 2022.02.08 |