POST http://127.0.0.1:8000/cart/ 500 (внутренняя ошибка сервера) и непойманная (в обещании) SyntaxError: Неожиданная лексема < в JSON в позиции 0
В настоящее время я работаю над сайтом электронной коммерции, к сожалению, я наткнулся на несколько ошибок. Когда я нажимаю кнопку добавления в корзину, я ожидал увидеть терминал, отображающий 'Action:add ProductId:4', но терминал отображает следующую ошибку
File "C:\Programming\Python\GevengyCart\store\views\cart.py", line 14, in updateItem data = json.loads(request.data) Файл "C:\Users\PC\AppData\Local\Programs\Python\Python310\lib\json_init_.py", строка 339, in loads raise TypeError(f'объект JSON должен быть str, bytes или bytearray, ' TypeError: объект JSON должен быть str, bytes или bytearray, а не dict [27/Jul/2022 23:57:05] "POST /cart/ HTTP/1.1" 500 99758
В консоли отображаются следующие ошибки POST http://127.0.0.1:8000/cart/ 500 (Внутренняя ошибка сервера) updateUserOrder @ cart.js:24 (анонимный) @ cart.js:13 VM2058:1 Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
HTML строка для добавления в корзину
<button data-product="{{product.id}}" data-action="add" class="update-cart add btn-outline-secondary btn btn-sm text-dark p-0 fas fa-shopping-cart text-primary mr-1"> Add to Cart</button>
Здесь находится cart.js
var updateBtns = document.getElementsByClassName('update-cart')
for(var 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'){
console.log('Not logged in')
}else{
updateUserOrder(productId, action)
}
})
}
function updateUserOrder(productId, action){
console.log('User is logged in, sending data...')
var url = '/cart/'
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)=>{
console.log('data:', data)
})
}
Вот cart.py в моей папке views
from django.http import JsonResponse
from django.shortcuts import render , redirect
import json
from store.models.product import Product
from django.contrib.auth.hashers import check_password
from store.models.customer import Customer
from django.views import View
from store.models.product import Product
from rest_framework.decorators import api_view
@api_view(["POST"])
def updateItem(request):
data = json.loads(request.data)
productId = data['productId']
action = data['action']
print('Action:', action)
print('productId:', productId)
return JsonResponse('Item was added', safe=False)