Django - веб-сайт - электронная коммерция - ДОБАВИТЬ В КОРЗИНУ ОШИБКА
Я изучаю Python и Django и пытаюсь создать сайт студии пилатеса (как сайт электронной коммерции, я следую некоторым учебникам), и у меня возникла проблема с ADD TO CART.
Я не знаю, почему это не работает. Когда я нажимаю на кнопку, которая должна добавить товар в корзину, и осматриваю сайт, я вижу, что есть эта ошибка:
POST http://127.0.0.1:8000/cart/add/ 500 (Внутренняя ошибка сервера)
`
o = o("abort");
try {
r.send(i.hasContent && i.data || null)
} catch (e) {
if (o)
throw e
}`
Пожалуйста, не могли бы вы помочь мне с этим? Я совсем застрял!!!
Я попытался добавить этот товар в корзину. Я попытался проверить, нет ли проблем с моделями и т. д., но все выглядит хорошо. Честно говоря, я понятия не имею, что еще можно сделать, особенно потому, что я только начал изучать Django и еще не так много знаю о нем.
views.py:
`def cart_summary(request):
return render(request, 'cart_summary.html', {})
def cart_add(request):
# Get the cart
cart = Cart(request)
# test for POST
if request.POST.get('action') == 'post':
# Get stuff
product_id = int(request.POST.get('product_id'))
# product_qty = int(request.POST.get('product_qty'))
# lookup product in DB
product = get_object_or_404(Product, id=product_id)
# Save to session
cart.add(product=product)
# Get Cart Quantity
cart_quantity = cart.__len__()
# Return resonse
# response = JsonResponse({'Product Name: ': product.name})
response = JsonResponse({'qty': cart_quantity})
print(response)
# messages.success(request, ("Product Added To Cart..."))
return response
else:
return HttpResponse("Invalid request method or action.", status=400)
def cart_delete(request):
pass
def cart_update(request):
pass
..............................................
product.html:
{% extends 'base.html' %}
{% block content %}
<div class="container my-5">
<br/>
<div class="card mb-3">
<div class="row g-0">
<div class="col-md-4">
<img src="{{ product.image.url }}" class="img-fluid rounded-start" alt="...">
</div>
<div class="col-md-8">
<div class="card-body">
<h5 class="card-title">{{ product.name }}</h5>
<p class="card-text">{{ product.info }}</p>
<p class="card-text"><small class="text-body-secondary">Class Length: 60 minutes.</small></p>
<button type="button" value="{{ product.id }}" class="btn btn-secondary" id="add-cart">Book a class</button>
<button type="button" value="{{ product.id }}" class="btn btn-secondary">One Month Membership</button>
</div>
</div>
</div>
</div>
<br/>
</div>
<script>
$(document).on('click', '#add-cart', function(e){
e.preventDefault();
$.ajax({
type: 'POST',
url: '{% url 'cart_add' %}',
data: {
product_id: $('#add-cart').val(),
product_qty: $('#qty-cart option:selected').text(),
csrfmiddlewaretoken: '{{ csrf_token }}',
action: 'post'
},
success: function(json){
console.log(json)
},
error: function(xhr, errmsg, err){
}
});
})
</script>
{% endblock %}