jiiheee's 개발 일지

[Django] 주문 등록 API 구현하기 본문

📚 Study/Django

[Django] 주문 등록 API 구현하기

◼️ 2023. 12. 13. 00:47

목표

  • 요청자로부터 user_id, product_id 받기
  • 요청자로부터 받은 data DB에 저장 후 '주문이 완료되었습니다.' 보여주기

Reservation / urls.py 'ReservationAddView' 추가

데이터를 DB에서 가져오는게 아니라 넣을 것이기 때문에 url을 "orderadd/"로 받는다.

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

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())
]

Reservation / views.py 'ReservationAddView' 추가

request로부터 data를 받아서 DB에 저장하므로 def post로 받는다.

받을 정보는 reservation_number, user, product 이다.

 

(사실 reservation_number는 user가 작성하지 않고 주문을 완료하면 자동으로 랜덤하게 주어지도록 해야하는데

우선 user로 받고 추후에 수정할 예정)

 

request로부터 받은 정보들을 Reservation models 폼에 맞춰서 넣은 후 DB에 저장한다.

(이전에 공부했듯이 create하는 순간 DB에 save까지 연결되므로 save() 함수는 사용하지 않아도 된다.)

 

DB에 정상적으로 저장이 되면 '주문이 완료되었습니다.' 문구를 보여준다.

 

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 ReservationAddView(APIView):
    def post(self, request):
        reservation_number = request.data.get("reservation_number")
        user = request.data.get("user_id")
        product = request.data.get("product_id")

        Reservation.objects.create(
        reservation_number=reservation_number,
        user_id=user,
        product_id=product
        )
        return HttpResponse('주문이 완료되었습니다.')

결과