Ajax POST запрос не работает в проекте Django
Я пытался создать сайт электронной торговли как часть моего проекта. Но ajax "POST" с использованием jquery не работает. Я не уверен, где это пошло не так. Пожалуйста, простите за мой плохой английский....
{% extends "store/base.html" %}
{% load static %}
{% block title %}
{{ product.name }}
{% endblock %}
{% block content %}
<div class="container">
<main class="pt-5">
<div class="row g-3">
<div class="col-md-5 col-lg-5 order-md-first bg-light">
<img class="img-fluid mx-auto d-block" width="200px" alt="Responsive image" src="{{ product.image.url }}">
</div>
<div class="col-md-7 col-lg-7 ps-md-3 ps-lg-5">
<h1 class="mb-0 h4">{{ product.title }}</h1>
<p><span class="lead">{{ product.author }}</span> (Author)</p>
<p>{{ product.description|slice:":355" }}...</p>
<div class="border">
<div class="col border-bottom">
<div class="row p-3">
<div class="col-6">Hardback</div>
<div class="col-6 text-end"><span class="h4 fw-bold">£{{ product.price }}</span></div>
</div>
</div>
<div class="col">
<div class="row p-3">
<div class="col-6">
<label for="select">Qty</label>
<select id="select">
<option value="">1</option>
<option value="">2</option>
<option value="">3</option>
<option value="">4</option>
</select>
</div>
<div class="col-6 text-end">
<button type="button" id="add-button" value="{{ product.id }}" class="btn btn-secondary btn-sm">Add to basket</button>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
</div>
<script>
$(document).on('click', '#add-button', function (e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: '{% url "basket:basket_add" %}',
data: {
productid: $('#add-button').val(),
csrfmiddlewaretoken: "{{csrf_token}}",
action: 'post',
},
success: function (json) {
},
error: function (xhr, errmsg, err) {}
});
})
</script>
{% endblock %}
выше приведена шаблонная часть
from django.shortcuts import render
from django.shortcuts import get_object_or_404
from django.http import JsonResponse,HttpResponse
from .basket import Basket
from store.models import Product
def basket_summary(request):
return render(request,'store/basket/summary.html')
def basket_add(request):
basket= Basket(request)
if request.POST.get('action') == "post":
product_id = str(request.POST.get('productid'))
product=get_object_or_404(Product, id=product_id)
basket.add(product=product)
response = JsonResponse({'test':product_id})
return response
else:
return HttpResponse("Error")
выше - мнения
class Basket():
def __init__(self,request):
self.session=request.session
basket = self.session.get('skey')
if 'skey' not in request.session:
basket = self.session['skey'] = {}
self.basket=basket
def add(self,product):
product_id = (product.id)
if product_id not in self.basket:
self.basket[product_id] = {'price':product.price}
self.session.modified = True
выше представлен python-файл basket.py
Я ожидал получить некоторые данные из шаблона в cookies. Но я продолжаю получать ошибку 500