Django - 12에서 했던 연습요 viewset 분리해놓기

blog/urls/api_urls.py 생성 | blog/views/api_views.py 생성

APIView
View를 확장하여 RESTful API를 쉽게 구축할 수 있도록 해주는 클래스View와 유사하지만, APIView는 다양한 Request 객체를 사용하여, 파싱된 데이터에 쉽게 접근Response 객체를 사용하여, API 응답을 반환rest_framework.status 모듈을 사용해 HTTP 상태 코드를 명확하게 반환 가능APIView 클래스에 권한, 스로틀링 등의 기능을 쉽게 통합 가능from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
class MyAPIView(APIView):
def get(self, request):
data = {"message": "Hello, World!"}
return Response(data, status=status.HTTP_200_OK)
def post(self, request):
data = request.data
return Response(data, status=status.HTTP_201_CREATED)





permission_classes = [IsAuthenticatedOrReadOnly]


Generic View
from rest_framework.generics import ListAPIView
from .models import MyModel
from .serializers import MyModelSerializer
class MyModelListView(ListAPIView):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
from rest_framework.generics import CreateAPIView
from .models import MyModel
from .serializers import MyModelSerializer
class MyModelCreateView(CreateAPIView):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
ListCreateAPIViewfrom rest_framework.generics import ListCreateAPIView
from .models import MyModel
from .serializers import MyModelSerializer
class MyModelListCreateView(ListCreateAPIView):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
from rest_framework.generics import UpdateAPIView
from .models import MyModel
from .serializers import MyModelSerializer
class MyModelUpdateView(UpdateAPIView):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
from rest_framework.generics import DestroyAPIView
from .models import MyModel
class MyModelDeleteView(DestroyAPIView):
queryset = MyModel.objects.all()
from rest_framework.generics import RetrieveAPIView
from .models import MyModel
from .serializers import MyModelSerializer
class MyModelDetailView(RetrieveAPIView):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
from rest_framework.generics import RetrieveUpdateAPIView
from .models import MyModel
from .serializers import MyModelSerializer
class MyModelDetailUpdateView(RetrieveUpdateAPIView):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
from rest_framework.generics import RetrieveDestroyAPIView
from .models import MyModel
class MyModelDetailDeleteView(RetrieveDestroyAPIView):
queryset = MyModel.objects.all()
from rest_framework.generics import RetrieveUpdateDestroyAPIView
from .models import MyModel
from .serializers import MyModelSerializer
class MyModelDetailView(RetrieveUpdateDestroyAPIView):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer









