[python] Django REST framework에서의 장바구니 기능 처리 방법

장바구니는 전자 상거래 웹 애플리케이션에서 사용자가 원하는 상품들을 임시로 저장하는 기능입니다. Django REST framework는 이러한 장바구니 기능을 구현하기에 적합한 강력한 도구입니다. 이번 블로그 포스트에서는 Django REST framework를 사용하여 장바구니 기능을 처리하는 방법에 대해 알아보겠습니다.

1. 모델 설계

장바구니를 구현하기 위해 먼저 필요한 모델을 설계해야 합니다. 예를 들어, 상품(Product)과 장바구니 아이템(CartItem)을 다음과 같이 정의할 수 있습니다.

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=255)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    # 추가 필드들...

class CartItem(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    quantity = models.IntegerField(default=1)
    # 추가 필드들...

위의 코드에서 CartItem 모델은 Product 모델과의 관계를 나타내기 위해 product 필드를 사용합니다. quantity 필드는 장바구니에 담긴 특정 상품의 수량을 나타냅니다.

2. Serializer 작성

다음으로, Django REST framework의 Serializer를 사용하여 모델 데이터를 JSON 형식으로 직렬화해야 합니다. CartItem 모델의 Serializer는 다음과 같이 작성할 수 있습니다.

from rest_framework import serializers
from .models import CartItem

class CartItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = CartItem
        fields = ['id', 'product', 'quantity']

위의 코드에서 Meta 클래스는 CartItem 모델과 CartItemSerializer를 연결해 줍니다. 어떤 필드를 직렬화할지 fields 속성에서 정의할 수 있습니다.

3. ViewSet 작성

이제 ViewSet을 작성하여 API 엔드포인트를 정의해야 합니다. CartItemViewSet은 장바구니 아이템에 대한 CRUD(Create, Retrieve, Update, Delete) 작업을 처리합니다.

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

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

위의 코드에서 queryset 속성은 모든 CartItem 개체를 가져오고, serializer_class 속성은 CartItemSerializer를 사용하여 데이터를 직렬화합니다.

4. URL 설정

마지막으로, 장바구니에 대한 URL을 설정해야 합니다. urls.py 파일을 열고 다음과 같이 URL 패턴을 추가하세요.

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

router = DefaultRouter()
router.register(r'cartitems', CartItemViewSet)

urlpatterns = [
    # 다른 URL 패턴...
    path('api/', include(router.urls)),
]

위의 코드에서 router.register() 메서드를 사용하여 CartItemViewSetcartitems/ 엔드포인트에 매핑합니다. 이제 /api/cartitems/로 요청을 보내면 장바구니 아이템에 대한 CRUD 작업을 수행할 수 있습니다.

마무리

이렇게 Django REST framework를 사용하여 장바구니 기능을 처리하는 방법을 소개했습니다. Django REST framework의 강력한 기능을 활용하여 사용자에게 편리한 장바구니 기능을 제공할 수 있습니다. 자세한 내용은 Django REST framework 공식 문서를 참조해 주세요.

참고 자료: