我将产品添加到购物车中,并使用带有product.id
的按钮。尝试在没有刷新页面的情况下添加到购物车中,并且此代码在第一次运行时无法正常工作,但需要刷新,刷新后可以正常工作。
<a href="javascript:void(0);" class="add_to_cart" data-id="{{ product.id }}"><button>Add in the cart</button></a>
这是我的网址
url(r'^cart/create/$', views.cart_create, name='cart_create'),
我的方法返回JsonResponse,购物车长度和总价
def cart_create(request):
cart = Cart(request)
product_id = request.GET.get('product_id')
product = Product.objects.get(id=product_id)
cart.add(product=product)
return JsonResponse({'cart_length':cart.get_length(), 'cart_total':cart.get_total_price()})
Ajax可以正常工作,但是在添加第一个产品后不是第一次(需要刷新页面),它可以正常工作而无需刷新
$(document).ready(function(){
$(".add_to_cart").click(function(){
product_id = $(this).attr("data-id")
data = {
product_id: product_id,
},
$.ajax({
type: "GET",
url: '{% url "cart:cart_create" %}',
data: data,
success: function(data){
$(".cart_count").html(data.cart_length + " товаров " + data.cart_total + " ₽")
},
});
});
});
标题
{% if cart|length > 0 %}
Our cart:
<a href="{% url 'cart:cart_show' %}" class="cart_count">
{{ cart.get_length }} products {{ cart.get_total_price }}
</a>
{% else %}
<a href="{% url 'cart:cart_show' %}">Cart empty</a>
{% endif %}
Server return "GET /cart/create/?product_id=1 HTTP/1.1" 200 after click.
这是可行的,但第一次未在标题中显示。 请帮我
我意识到,如果我将{% if cart|length > 0 %}{% else %}{% endif %}
的代码块移除并仅保留{{ cart.get_length }} products {{ cart.get_total_price }} ₽
,它将起作用