728x90
반응형
전체조회까지 잘 나오는 걸 보았으니 이제 상세 조회를 구현해보자.
Todo 상세 조회 serializer 만들기
#todo/serializers.py
.
.
.
#추가
class TodoDetailSerializer(serializers.ModelSerializer):
class Meta:
model:Todo
fields = ('id','title','description','created','complete','important')
Todo 상세 조회 view 만들기
전체 조회와는 주소가 다르기때문에 클래스를 구분해야한다.
#todo/views.py
from rest_framework import status
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.generics import get_object_or_404
from rest_framework import viewsets
from .models import Todo
from .serializers import TodosimpleSerializer,TodoDetailSerializer
# Create your views here.
class TodosAPIView(APIView):
def get(self,request):
todos = Todo.objects.filter(complete=False)
serializer = TodosimpleSerializer(todos, many=True)
return Response(serializer.data ,status=status.HTTP_200_OK)
class TodoAPIView(APIView):
def get(slef,request,pk):
todo = get_object_or_404(Todo,id=pk)
serializer = TodoDetailSerializer(todo)
return Response(serializer.data, status=status.HTTP_200_OK)
TodoAPIView라는 클래스를 만들고 get메서드에서 Todo객체를 가져오도록 한다.
TodoDetailSerializer에서 Todo 객체를 통과시킨 다음 Response로 전달한다.
Todo 상세 조회 URL 만들기
TodoAPIView는 특정 Todo 의 id를 기반으로 구분되므로 todo주소에 TodoAPIView를 할당한다.
#todo/urls.py
from django.urls import path
from .views import TodosAPIView,TodoAPIView
urlpatterns = [
path('todo/',TodosAPIView.as_view()),
path('todo/<int:pk>', TodoAPIView.as_view()),
]
상세조회 API테스트
url을 입력하고 확인해보면 세부사항이 잘 나오는 것을 볼 수 있다.
728x90
반응형
'Python > DRF(Django REST Framework)' 카테고리의 다른 글
[DRF] Todo 목록 API만들기(5) (0) | 2023.01.30 |
---|---|
[DRF] Todo 목록 API만들기(4) (0) | 2023.01.30 |
[DRF] Todo 목록 API만들기(2) (0) | 2023.01.30 |
[DRF] Todo 목록 API만들기(1) (0) | 2023.01.30 |
[DRF] Django Rest framework시작하기 (0) | 2023.01.30 |
댓글