[python] Django REST framework에서의 쇼핑몰 카트 처리 방법

쇼핑몰 웹 애플리케이션에서는 사용자가 상품을 선택할 수 있는 카트 기능이 필요합니다. Django REST framework는 이러한 카트 처리를 위한 효과적인 방법을 제공합니다. 이 글에서는 Django REST framework를 사용하여 쇼핑몰 카트를 처리하는 방법을 알아보겠습니다.

1. 모델 설계

첫 번째로, 카트에 담길 상품과 수량을 저장할 모델을 설계해야 합니다. 예를 들어, CartItem 모델을 만들어 보겠습니다.

from django.db import models

class CartItem(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    quantity = models.IntegerField(default=1)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

위의 코드에서 CartItem 모델은 Product 모델과 외래키 관계를 맺고 있습니다. 이렇게 설계된 모델은 상품과 수량에 대한 정보를 저장할 수 있습니다.

2. 시리얼라이저 정의

다음으로, 카트에 담긴 상품 정보를 서버에 전달하기 위해 시리얼라이저를 정의해야 합니다. 시리얼라이저는 모델 인스턴스를 JSON 형식으로 변환하고, JSON 데이터를 모델 인스턴스로 변환하는 역할을 합니다.

from rest_framework import serializers
from .models import CartItem

class CartItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = CartItem
        fields = '__all__'

위의 코드에서는 CartItem 모델과 CartItemSerializer를 정의하고 있습니다. CartItemSerializerCartItem 모델의 모든 필드를 시리얼라이즈하도록 설정되어 있습니다.

3. ViewSet 구현

이제 카트 처리를 위한 ViewSet을 구현해야 합니다. ViewSet은 데이터의 생성, 조회, 수정, 삭제를 처리하는 API 뷰입니다.

from rest_framework import viewsets
from .models import CartItem
from .serializers import CartItemSerializer

class CartItemViewSet(viewsets.ModelViewSet):
    queryset = CartItem.objects.all()
    serializer_class = CartItemSerializer

위의 코드에서는 CartItemViewSet 클래스를 정의하고 있습니다. queryset 변수는 뷰셋이 쿼리할 데이터베이스 쿼리셋을 설정하고, serializer_class 변수는 사용할 시리얼라이저 클래스를 설정합니다.

4. URL 매핑

마지막으로, ViewSet을 URL에 매핑해야 합니다. 이를 위해 Django의 urls.py 파일에 아래와 같이 코드를 추가합니다.

from django.urls import include, path
from rest_framework import routers
from .views import CartItemViewSet

router = routers.DefaultRouter()
router.register(r'cart-items', CartItemViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

위의 코드에서 router.register() 함수를 사용하여 CartItemViewSetcart-items URL에 매핑합니다.

결론

Django REST framework를 사용하면 쇼핑몰 카트 처리를 쉽고 효과적으로 구현할 수 있습니다. 위에서 소개한 방법을 사용하여 쇼핑몰 카트를 처리하는 기능을 개발해보세요.

참고 자료