jiiheee's 개발 일지

[Django] 주문 취소 API 구현하기 본문

📚 Study/Django

[Django] 주문 취소 API 구현하기

◼️ 2023. 12. 13. 18:21

목표

  • order cancel urls, views 추가

Reservation / urls.py  'cancel'  추가

사용할 url을 urlpatterns에 추가하고 import에도 추가해준다.

from django.urls import path
from .views import ReservationView, ReservationListView, ReservationAddView, ReservationCancel

from . import views

urlpatterns = [
    path("<int:user_id>/<int:reservation_id>", ReservationView.as_view()),
    path("<int:user_id>", ReservationListView.as_view()),
    path("orderadd/", ReservationAddView.as_view()),
    path("cancel/<int:reservation_id>", ReservationCancel.as_view())
]

	# reservation_id를 받아서 주문 취소 url 추가

Reservation / views.py  'ReservationCancelView' 추가

DB에 저장된 데이터를 지우기 위해서 Reservation.objects.get(id=reservation_id)으로 한가지 데이터를 가져온다.

여기서 id는 Reservation model의 속성에 있는 조건을 사용해야하며 reservation_id는 요청자로부터 받은다.

 

Reservation_number로 받지않고 reservation_id로 받는 이유는 reservation_id는 각각의 데이터가 고유하게 받는 번호이므로 중복되거나 수정되지 않게 때문에 오류를 줄여줄 수 있기 때문이다.
from django.http import HttpResponse
from rest_framework.response import Response
from rest_framework.views import APIView
from reservation.models import Reservation
from .serializers import ReservationSerializer

# ... (중간 코드 생략)
    
class ReservationCancel(APIView):
    def get(self, request, reservation_id: int):
        order_cancel = Reservation.objects.get(id=reservation_id)
        order_cancel.delete()
        return HttpResponse('주문을 취소하였습니다.')

결과