JSONDecodeError at /update_item/ Ожидаемое значение: строка 1 столбец 1 (char 0)

Я начинающий. Я попробовал все в курсе Django E-commerce website, но это не работает для меня. Я также попробовал документацию, но не получил никакого решения. У меня такая ошибка, когда я перехожу к /update_item/ и данные не отображаются в терминале:

Ожидаемое значение: строка 1 столбец 1 (char 0)

скриншот ошибки

ссылка на учебник ссылка на учебник https://youtu.be/woORrr3QNh8

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)
})
}
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()
    });
}

views.py

def updateItem(request):

    data = json.loads(request.body)
    productId = data['productId']
    action = data['action']
    print("Action",action)
    print("Pordutcs:",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.quantitiy +1)
    
    
    elif action == 'remove':
        orderitem.quantity = (orderitem.quantity -1)    
    orderitem.save()
    if orderitem.quantity <= 0:
        orderitem.delete()
    return JsonResponse("Item was added", safe=False)

store.html

{% extends 'store/main.html' %}
{% load static %}
{% block content %}

<div class="row">
    {%for i in products %}
    <!-- {{i.image.url}} -->
    <div class="col-lg-4">
        <!-- <img class="thumbnail" src="{{i.image.url}}" alt="sorry"> -->
        <img class="thumbnail" src="static{{i.imageURL}}">
        <!-- {% static 'my_app/example.jpg' %} -->
        <div class="box-element product">
            <h6><strong>{{i.name}}</strong></h6>
            <hr>
            <button data-product="{{i.id}}" data-action='add' class="btn btn-outline-secondary add-btn updatecart">Add
                to Cart</button>
            <a class="btn btn-outline-success" href="#">View</a>
            <h4 style="display: inline-block; float:right"><strong>Rs {{i.price|floatformat:2}}</strong></h4>
        </div>
    </div>
    {% endfor %}
    <!-- <img src="static/images/robot.jpg"> -->
</div>
{% endblock content %}

Я просмотрел тот учебник, который вы упомянули, и кажется, что ваш код является точной копией из учебника. Просто чтобы убедиться, что мы не делаем что-то неправильно с токеном csrf, попробуйте исключить токен csrf и попробовать один раз.

дайте это:

from django.views.decorators.csrf import csrf_exempt

в верхней части вашего файла views.py. И этот декоратор:

@csrf_exempt

непосредственно перед вашей функцией updateItem(). Таким образом, ваша функция должна быть примерно такой:

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

Также удалите 'X-CSRFToken':csrftoken, эту строку из javascript

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