Как ограничить создание корзины только (определенным URL) "/api/cart/" URL?

Следующий класс был разработан для создания корзины и добавления в нее товаров

class CartAPIView(TokenMixin, CartUpdateAPIMixin, APIView):

cart = None

# get the cart from token otherwise create new cart
def get_cart(self):
    # if the token exist get it from the request
    token_data = self.request.GET.get('token')

    # create dummy cart object
    cart_obj = None

    # if the get request has token, decode it, get cart_id, return cart object
    if token_data:
        # token_dict = ast.literal_eval(base64.standard_b64decode(token_data.encode("utf-8")).decode("utf-8"))
        token_dict = self.parse_token(token=token_data)
        cart_id = token_dict.get("cart_id")
        print(cart_id)
        try:
            cart_obj = Cart.objects.get(id=cart_id)
        except:
            pass
        self.token = token_data


    # If no cart passed in the request it will create new cart object 
    if cart_obj == None:
        cart = Cart()
        cart.tax_percentage = 0.075
        if self.request.user.is_authenticated:
            cart.user = self.request.user
        cart.save()
        data = {
            "cart_id": cart.id,
        }
        # use the create_token from the mixins to create the token for the new cart
        self.create_token(data)
        cart_obj = cart
    return cart_obj



# The entry point for /cart/ API to create & update cart
def get(self, request, format=None):
    # First either i will get the cart data or i wil create new one 
    cart = self.get_cart()
    self.cart = cart
    # if the get call has cart and has item it will update the cart 
    self.update_cart()

    # getting the cart items through serializer 
    items = CartItemSerializer(cart.cartitem_set.all(), many=True)
    data = {
        "token": self.token,
        "cart" : cart.id,
        "count": cart.items.count(),
        "items": items.data,
        "total": cart.total,
        "subtotal": cart.subtotal,
        "tax_total": cart.tax_total,
        
    }
    return Response(data)

Урлы, используемые для обслуживания корзины, следующие

создайте новую корзину /api/cart/

получить информацию о корзине /api/cart/?token=eydjYXJ0X2lkJzogMTh9

добавьте товар вместе с количеством /api/cart/?token=eydjYXJ0X2lkJzogMTh9&item=3&qty=10

удалить товар из корзины /api/cart/?token=eydjYXJ0X2lkJzogMTh9&item=3&qty=10&delete=true

URL.py

urlpatterns = [
path('admin/', admin.site.urls),

# Django debug tool bar
path('__debug__/', include(debug_toolbar.urls)),

# JWT Token => Login API 
path('api/user/login/', MyTokenObtainPairView.as_view(), name='token_obtain_pair'),
path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),

path('api-auth/', include('rest_framework.urls')),

# Categories APIs
path('api/categories/', CategoryListAPIView.as_view(), name="categories_list"),
path('api/categories/<int:pk>/', CategoryRetrieveAPIView.as_view(), name="category_details"),

# Products APIs
path('api/products/', ProductListAPIView.as_view(), name="products_list"),
path('api/products/<int:pk>/', ProductRetrieveAPIView.as_view(), name="product_details"),

# API for guest checkout who has email only
path('api/user/checkout/', UserCheckoutAPI.as_view(), name="user_checkout_api"),

# Cart 
path('api/cart/', CartAPIView.as_view(), name="cart_api"),

# Checkout 
path('api/checkout/', CheckoutAPIView.as_view(), name="checkout_api"),

]

Проблема в том, что

Если кто-то попал в корзину с любыми параметрами URL, функция get_cart создаст новую корзину по умолчанию например, если кто-то попадет в корзину со следующим URL /api/cart/?cart_id=blabla

Функция get cart создаст новую корзину

Вопрос в том, что

Как ограничить создание корзины только URL "/api/cart/" с сохранением других допустимых параметров "token", "qty", и "delete"

Заранее спасибо

Вернуться на верх