python3 之 天天生鲜 我的购物车

 

加入购物车:

实现:

  登录状态(商品存入数据库)   与   非登录状态( 商品暂时加入cookie 等待登录合并数据库)

进入购物车:

实现:

  登录状态   与   非登录状态  购物车信息

#登陆状态 从数据库中获取购物车信息
if request.user.is_authenticated():
     #创建 django-redis客户端 链接setting-cache 默认数据库5
      redis_conn = get_redis_connection('default')
      #获取用户id
      user_id = request.user.id
      #查询数据库 获得所有的 field(sku_id) 和 value(count) 的对象
       cart_dict = redis_conn.hgetall('cart_%s'%user_id)
#非登录状态 从cookies中获取商品信息
else
: #从cookie 中获得购物车数据 cart_json = request.COOKIES.get('cart') #判断 cart_json 不是空的 != None也可以 if cart_json is not None: #课件方法 #加载 并进行 数据转换 cart_dict = json.loads(cart_json) else: cart_dict = {}

获取信息展示:

# 定义商品列表
        skus = []
        # 初始 总金额
        total_amount = 0
        # 初始 总数量
        total_count = 0
        # 遍历 获得总数量 总价格 及商品信息
        for sku_id, count in cart_dict.items():  # items:字典里获得所有key和value
            # 获取商品
            try:
                sku = GoodsSKU.objects.get(id=sku_id)
            except GoodsSKU.DoesNotExist:
                # 商品不存在 时 则继续 循环
                continue
            # 购物车数据为字节 转化为数字
            count = int(count)
            # 计算该商品总价格
            amount = sku.price * count
            # 动态添加该商品 总数和总价属性 方便sku调用
            sku.amount = amount
            sku.count = count
            # 把商品添加list- skus 在模板里调用
            skus.append(sku)
            # 计算 商品总价和总数量
            total_amount += amount
            total_count += count
            # 构建上下文
        context = {
            'skus': skus,
            'total_amount': total_amount,
            'total_count': total_count,
        }
        # 购物车
        cart_num = 0
        # 自定义购物车函数
        cart_num = cartnum(request, cart_num)
        # 字典更新 /添加 购物车数量
        context.update(cart_num=cart_num)
        return render(request,'cart.html',context)

 

posted @ 2020-10-29 14:52  Py_beginner  阅读(152)  评论(0编辑  收藏  举报