加入/抹掉购物车中的该商品
market.js
思路:用户点击+(or - )按钮时,前台发送ajax异步请求
$(".subShopping").click(function () {
var $sub_button = $(this);
var span_num = $sub_button.next("span").html();
if(span_num == "0"){ //每个商品的默认值为0
alert("购物车中本无此商品!");
return;
}
var goodsid = $sub_button.attr('goodsid');
$.get('/axf/subfromcart/', {'goodsid': goodsid}, function (data) {
console.log(data);
// 这部分内容则是由axfmiddleware.py 执行后返回的结果(当浏览器发送的url是/axf/subfromcart/,则先进入中间件相关的处理函数process_request())
if (data['status'] === 302){ // 未登录
window.open('/axf/login/', target="_self");
}else if(data['status'] === 200){
$sub_button.next('span').html(data['c_goods_num']); // 将减按钮紧邻后面的(同辈)元素中的内容 设置为商品在购物车中的数量
}
})
//
})
注意:
var goodsid = $add.attr(“goodsid”); // 可以获得用户自定义的属性
var goodsid = $add.prop(“goodsid”); //只能获得该标签的自带属性
view.py
def sub_from_cart(request):
"""
1.能够由sub_from_cart处理的状态码都是200,不然直接被中间件挡回去从购物车中减去商品
2.通过商品goodsid 查找当前用户的购物是否有该商品
3.>1 就会返回nums-1 的data
4.=0 直接从购物车中清除该商品,更新data 和数据库
"""
goodsid = request.GET.get("goodsid") # 接收附加在按钮上的商品id
carts = Cart.objects.filter(user=request.user).filter(goods_id=goodsid)
cart = carts.first()
data = {
"status": 200,
}
if cart.cart_goods_num > 1:
cart.cart_goods_num = cart.cart_goods_num - 1 # 购物车中该商品的数量减一
cart.save()
data["c_goods_num"] = cart.cart_goods_num
else: # 如果该商品在购物车中只有一个
cart.delete() # 删除该条购物车记录
data["c_goods_num"] = 0
return JsonResponse(data)