이제 CBV로 바꿔보자
rooms.views.py로 가서 다음과 같이 해준다.
from rest_framework.views import APIView
from rest_framework.response import Response
from .models import Room
from .serializers import RoomSerializer
class ListRoomsView(APIView): #APIView 이용
def get(self, request):
rooms = Room.objects.all()
serializer = RoomSerializer(rooms, many=True)
return Response(serializer.data)
이전에 했던 것과 동일한 결과가 나온다.
이제 ListAPIView라는 것을 사용해보자.
from rest_framework.generics import ListAPIView
from rest_framework.response import Response
from .models import Room
from .serializers import RoomSerializer
class ListRoomsView(ListAPIView):
pass

위와 같이 에러가 나온다.
ListRoomsView에
queryset = Room.objects.all()을 추가하면

또 다른 에러가 나온다.
serializer_class로 RoomSerializer를 추가하자.

정상적으로 나온다.
또 다른 것으로 Pagination도 가능하다.
config/settings.py에서
REST_FRAMEWORK = {
"DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.PageNumberPagination", "PAGE_SIZE": 10, }

Pagination이 완료되었고, url도 바뀐 걸 볼 수 있다.
이제 room들을 하나씩 볼 차례다.
from rest_framework.generics import ListAPIView, RetrieveAPIView
RetrieveAPIView : 하나의 데이터만을 보고 싶을 때 사용
RetrieveAPIView를 import 한 후에
rooms/serializers.py 내 field 부분에 pk 를 추가하고
fields = ("pk", "name", "price", "instant_book", "user")
rooms/<pk값> 으로 접속하면 다음과 같은 오류가 나온다.
