Не удается получить cookie в Django

довольно новичок в Django, и мне трудно решить ситуацию в проекте, над которым я работаю.

Я устанавливаю свои cookies через JS как JSON и пытаюсь запросить их в бэкенде.

Мой код для JS таков:

function getCookie(name) {
        // Split cookie string and get all individual name=value pairs in an array
        var cookieArr = document.cookie.split(";");

        // Loop through the array elements
        for(var i = 0; i < cookieArr.length; i++) {
        var cookiePair = cookieArr[i].split("=");

        /* Removing whitespace at the beginning of the cookie name and compare it with the given string */
        if(name == cookiePair[0].trim()) {
          // Decode the cookie value and return
          return decodeURIComponent(cookiePair[1]);
        }
    }

    // Return null if not found
    return null;
}

var cart = JSON.parse(getCookie('cart'))

if (cart == undefined){
    cart = {}
    console.log('Cart Created!', cart)
    document.cookie ='cart=' + JSON.stringify(cart) + ";domain=;path=/"
}
console.log('Cart:', cart)

Печенье сделано

После этого я пытаюсь получить cookie корзины в бэкенде. Также товары, добавленные в корзину, отображаются в консоли.

Console info

Мой код бэкенда таков:

def cart(request):
    print(request.COOKIES)
    if request.user.is_authenticated:
        customer = request.user.customer
        order, created = Order.objects.get_or_create(
            customer=customer,
            complete=False,
            )
        items = order.orderitem_set.all()
        cart_items = order.get_cart_items
    else:
        try:
            bag = json.loads(request.COOKIES['cart'])
            print('CART ITEMS:', bag)
        except KeyError:
            bag = {}
            print('CART ITEMS:', bag)

        items = []
        order = {
            'get_cart_total': 0,
            'get_cart_items': 0,
            }
        cart_items = order['get_cart_items']

        for i in bag:
            cart_items += bag[i]['quantity']

    context = {
        'items': items,
        'order': order,
        'cart_items': cart_items,
        }

    return render(request, 'cart/cart.html', context)

Изображение с терминала с данными, которые он получает из cookie:

Я думаю, что вы неправильно устанавливаете cookies (например, отсутствует время истечения срока действия), пожалуйста, проверьте это

Также, для упрощения ситуации вместо использования try/except можно просто использовать bag = json.loads(request.COOKIES.get('cart',{})

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