Нашел чудесную библиотеку django-ajax, берет на себя всю рутину, связанную с ajax во вьюшках Django.
Вьюшка теперь может выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
from django_ajax.decorators import ajax from models import Product from cart.cart import Cart @ajax def ajax_add_to_cart(request): if 'product_id' in request.GET and request.GET['product_id']: product_id = request.GET['product_id'] product = Product.objects.get(id=product_id) cart = Cart(request) cart.add(product, product.price, quantity=1) items_in_cart = cart.itemCount() return {'items_in_cart': items_in_cart} |
Ответом будет JSON такого вида
1 |
{"status": 200, "statusText": "OK", "content": {"items_in_cart": 5}} |
Шаблон может выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<a class="in-cart" href="{% url 'add_to_cart' item.id 1 %}">в корзину</a> <script type="text/javascript"> $(function() { var lnk = $("a.in-cart"); $(lnk).click(function() { $.get($(lnk).attr('href')).done(function( json ) { $("#items_in_cart").text(json.content.items_in_cart) }); return false }); }); </script> |