Отправка данных методом post через Fetch API на бэкенд Django не работает
Я пишу корзину покупок на Django, которая использует сессии. Я хочу отправлять ID выбранного товара на сервер через Javascript's fetch API. Когда я использую родной HTML form
с method=post
, мое серверное приложение работает правильно, но когда я использую fetch API, я получаю ошибки. Вот код моей кнопки:
<button class="btn btn-primary addtocart" id=2 onClick="GFG_click(this.id)">Add to Cart</button>
Вот JavaScript:
<script>
function GFG_click(clicked) {
fetch('cart/add/', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
id : '1'
}),
})
.then((res) => JSON.stringify(res.json()))
.then((data) => {
// Do some stuff ...
})
.catch((err) => console.log(err));
}
</script>
Вот шаблон URL Django:
path('cart/add/', views.cart_add, name='cart_add')
Вот cart_add
вид:
def cart_add(request):
if request.method == 'POST':
cart = Cart(request)
id = request.POST.get('id')
product = Product.objects.get(id=id)
cart.add(product=product)
return JsonResponse("success")
И вот какую ошибку я получаю:
Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
DoesNotExist at /playground/cart/add/
Product matching query does not exist.
Request Method: POST
Request URL: http://127.0.0.1:8000/playground/cart/add/
Django Version: 4.0.5
Exception Type: DoesNotExist
Exception Value:
Product matching query does not exist.
В этой строке:
product = Product.objects.get(id=id)