Мой метод в views.py попробуйте получить product_slug
, потому что ему нужно product = Product.objects.get(slug=product_slug)
и добавить этот товар в корзину. U попробуйте использовать XMLHttpRequest
с JS
, но с ошибкой 500. Что я делаю не так?
urls.py
url(r'^cart/create/$', views.cart_create, name='cart_create'),
views.py
def cart_create(request):
cart = Cart(request)
product_slug = request.GET.get('product_slug')
product = Product.objects.get(slug=product_slug)
cart.add(product=product)
return JsonResponse({'200':'OK'})
product_list.html
<a href="javascript:void(0);" class="add_to_cart" data-slug="{{ product.slug }}">Add</a>
base.html
var add_to_cart = document.getElementsByClassName('add_to_cart');
for(var i = 0; i < add_to_cart.length; i++) {
product_slug = add_to_cart[i].getAttribute('data-slug')
add_to_cart[i].onclick = function() {
loadA(product_slug)
}
}
function loadA(product_slug) {
var xhr = new XMLHttpRequest();
url = "{% url 'cart:cart_create' %}" + product_slug
xhr.open('GET', url);
xhr.send();
if (xhr.status != 200) {
console.log('no')
} else {
console.log('ye')
}
}
В console.log
вывод no
и ошибка (Internal Server Error)
. Помогите мне, пожалуйста.
Я пытаюсь переписать этот код с чистой javascript/XMLHttp
> без jQuery/Ajax
$(".add_to_cart").click(function() {
product_slug = $(this).attr("data-slug")
data = {
product_slug: product_slug,
},
$.ajax({
type: "GET",
url: "{% url 'cart:cart_create' %}",
data: data,
success: function(data) {
$(".cart_score").empty().append(data.cart_length + " товаров " + data.cart_total + " ₽")
},
});
});