def cart(request):#购物车页面user_id=request.COOKIES.get("user_id")goods_list=Cart.objects.filter(user_id=user_id).order_by("-id")if request.method=="POST":#cart页提交订单post_data=request.POSTcart_data=[]#收集前端传递过来的商品cart_ids=[]for k,v in post_data.items():if k.startswith("goods_"):#判断传过来的订单idprint(v,"v",k,"k")cart_data.append(Cart.objects.get(id=int(v)))cart_ids.append(int(v))goods_count=sum([int(i.goods_number) for i in cart_data])#提交过来的数据总的数量#goods_total=sum([int(i.goods_total) for i in cart_data])#订单的总价**goods_total=Cart.objects.filter(id__in=cart_ids).aggregate(Sum("goods_total"))#得到一个字典**goods_total=goods_total["goods_total__sum"]#goods_store=([str(i.goods_store) for i in cart_data])#保存订单order=Order()order.order_id=setOrderId(str(user_id),str(goods_count),"2")#订单中有多个商品或者多个店铺,使用goods_count来代替商品id,使用2代表店铺idorder.goods_count=goods_countorder.order_user=Buyer.objects.get(id=user_id)order.order_price=goods_totalorder.order_status=1order.save()#保存订单详情#这里的detail是购物车里的数据实例,不是商品的实例for detail in cart_data:order_detail=OrderDetail()order_detail.order_id=order#order是一条订单数据order_detail.goods_id = detail.goods_idorder_detail.goods_name = detail.goods_nameorder_detail.goods_price = detail.goods_priceorder_detail.goods_number = detail.goods_numberorder_detail.goods_total = detail.goods_totalorder_detail.goods_store = detail.goods_storeorder_detail.goods_image = detail.goods_pictureorder_detail.save()url="/buyer/place_order/?order_id=%s"%order.idreturn HttpResponseRedirect(url)return render(request,"buyer/cart.html",locals())