99.10.11

[Django] ViewSet 본문

Backend REST API with Python & Django

[Django] ViewSet

99.I0.II 2022. 2. 9. 18:40

viewsetview의 차이점:

 

별다른 커스터마이징된 동작이 없고 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