Tiny Finger Point Hand With Heart
본문 바로가기
Python/DRF(Django REST Framework)

[DRF] Todo 목록 API만들기(6)

by yoondii 2023. 1. 30.
728x90
반응형


이제 마지막으로 완료된 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,TodoCreateSerializer
. 
. 
.
class DoneTodosAPIView(APIView):#완료
    def get(self,request):
        dones = Todo.objects.filter(complete=True)
        serializer = TodosimpleSerializer(dones,many=True)
        return Response(serializer.data,status=status.HTTP_200_OK)

complete가 True인Todo만 필터링을 하여 TodoSimpleserializer에 전달한다.


완료 조회 view만들기

완료조회 view는 pk가 필요하기 때문에 완료전체와 따로 만들어야한다.

#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,TodoCreateSerializer

.
.
.
class DoneTodoAPIView(APIView):#완료조회
    def get(self,request,pk):
        done = get_object_or_404(Todo,id=pk)
        done.complete = True
        done.save()
        serializer = TodoDetailSerializer(done)
        return Response(status=status.HTTP_200_OK)

get메서드 형태로 구성하여, 특정 Todo를 찾아 complete를 true로 설정하여 저장한다.


완료 URL연결하기

#todo/urls.py

from django.urls import path

from .views import TodosAPIView,TodoAPIView,DoneTodoAPIView,DoneTodosAPIView

urlpatterns = [
    path('todo/',TodosAPIView.as_view()),
    path('todo/<int:pk>', TodoAPIView.as_view()),
    path('done/',DoneTodosAPIView.as_view()),
    path('done/<int:pk>',DoneTodoAPIView.as_view()),
]

완료 API 테스트

완료된 목록을 보여준다.

todo api 만들기 끝!!


데이터만 전달해 주기 때문에 더 편한 느낌..?

시리얼라이저만 잘 활용한다면 원하는 데이터를 다룰 수 있을 것 같다. 더 공부 해봐야징

 

전체 소스 코드는 아래 링크 확인!

https://github.com/YoonDii/self_study/tree/master/DRF_TODO

 

GitHub - YoonDii/self_study

Contribute to YoonDii/self_study development by creating an account on GitHub.

github.com

 

728x90
반응형

'Python > DRF(Django REST Framework)' 카테고리의 다른 글

[DRF] 영화정보_API(2)  (0) 2023.02.22
[DRF] 영화정보_API(1)  (0) 2023.02.22
[DRF] Todo 목록 API만들기(5)  (0) 2023.01.30
[DRF] Todo 목록 API만들기(4)  (0) 2023.01.30
[DRF] Todo 목록 API만들기(3)  (0) 2023.01.30

댓글