Django Ajax

Нашел чудесную библиотеку django-ajax, берет на себя всю рутину, связанную с ajax во вьюшках Django.
Вьюшка теперь может выглядеть так:

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 такого вида

{"status": 200, "statusText": "OK", "content": {"items_in_cart": 5}}

Шаблон может выглядеть так:

<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>

Добавить комментарий

Ваш адрес email не будет опубликован.