POST http://127.0.0.1:8000/update_item/ 500 - Django

У меня вопрос о django. На моем сайте электронной коммерции я пытаюсь добавить функцию добавления в корзину. Мой код работает, и я могу добавить в корзину с AnonymousUser. Но когда я пытаюсь добавить в корзину, когда я вошел в систему под учетной записью, я получаю эту ошибку: ошибка: Внутренняя ошибка сервера Итак, он добавляется в корзину, но location.reload не работает. Мне нужно перезагрузиться вручную.

В чем проблема? Пожалуйста, помогите!

Вот мой файл javascript, который называется cart.js cart.js

var updateBtns = document.getElementsByClassName('update-cart')

for (i = 0; i < updateBtns.length; i++) {
    updateBtns[i].addEventListener('click', function(){
        var productId = this.dataset.product
        var action = this.dataset.action
        console.log('productId:', productId, 'Action:', action)
        console.log('USER:', user)

        if (user == 'AnonymousUser'){
            addCookieItem(productId, action)
        }else{
            updateUserOrder(productId, action)
        }
    })
}

function updateUserOrder(productId, action){
    console.log('User is authenticated, sending data...')

        var url = '/update_item/'

        fetch(url, {
            method:'POST',
            headers:{
                'Content-Type':'application/json',
                'X-CSRFToken':csrftoken,
            }, 
            body:JSON.stringify({'productId':productId, 'action':action})
        })
        .then((response) => {
           return response.json()
        })
        .then((data) => {
            location.reload()
        })
}

function addCookieItem(productId, action){
    console.log('User is not authenticated')

    if (action == 'add'){
        if (cart[productId] == undefined){
        cart[productId] = {'quantity':1}

        }else{
            cart[productId]['quantity'] += 1
        }
    }

    if (action == 'remove'){
        cart[productId]['quantity'] -= 1

        if (cart[productId]['quantity'] <= 0){
            console.log('Item should be deleted')
            delete cart[productId]
        }
    }
    if (action == 'delete'){
        cart[productId]['quantity'] == 0
            delete cart[productId]
    }
    
    console.log('CART:', cart)
    document.cookie ='cart=' + JSON.stringify(cart) + ";domain=;path=/"
    
    location.reload()
}

views.py

def updateItem(request):
    data = json.loads(request.body)
    productId = data['productId']
    action = data['action']
    print('Action:', action)
    print('Product:', productId)

    customer = request.user.customer
    product = Product.objects.get(id=productId)
    order, created = Order.objects.get_or_create(customer=customer, complete=False)

    orderItem, creat ed = OrderItem.objects.get_or_create(order=order, product=product)

    if action == 'add':
        orderItem.quantity = (orderItem.quantity + 1)
    elif action == 'remove':
        orderItem.quantity = (orderItem.quantity - 1)
    
    orderItem.save()

urls.py

path('update_item/', views.updateItem, name='update_item')

Ваша функция просмотра не отвечает!!!

Также обратите внимание на слово creat ed, которое должно быть created и creat ed!

def updateItem(request):
    data = json.loads(request.body)
    productId = data['productId']
    action = data['action']
    print('Action:', action)
    print('Product:', productId)

    customer = request.user.customer
    product = Product.objects.get(id=productId)
    order, created = Order.objects.get_or_create(customer=customer, complete=False)

    orderItem, created = OrderItem.objects.get_or_create(order=order, product=product)

    if action == 'add':
        orderItem.quantity = (orderItem.quantity + 1)
    elif action == 'remove':
        orderItem.quantity = (orderItem.quantity - 1)
    
    orderItem.save()

    return JsonResponse({'status':'ok'})

Также лучше, чтобы вы контролировали свою функцию с помощью блока try execpt

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