django-redis 和 vue 实现的购物车

  • 安装模块

    • pip install django-redis
  • 后端代码

    # 购物车
    class CartView(APIView):
        # 初始化函数
        def __init__(self):
            self.conn = get_redis_connection('default')
    
        # 获取购物车信息
        def get(self,request):
            # 读取数据
            uid = request.GET.get('id')
            key = 'cart_{}'.format(uid)  # cart_1
            tmp = self.conn.hgetall(key)  # {b'a9':b'20',b'a10':b'13'}
            if not tmp:
                return Response({
                    "status":201,
                    "msg":"购物车为空"
                })
            data = {k.decode('utf-8')[1:]:v.decode('utf-8') for k,v in tmp.items()}
            # 如何获取商品Id
            goods = models.Goods.objects.filter(id__in=data).all()
            data_list = []
            datax = {k.decode('utf-8'): v.decode('utf-8') for k, v in tmp.items()} # {'a10': '13', 'a9': '20'}
            for good in goods:
                gid = good.id
                info = {"id":gid,"name":good.name,"store":good.store,"price":float(good.price),"img":good.img,"count":datax.get('a'+str(gid))}
                data_list.append(info)
            return Response({
                "status":200,
                "msg": "",
                "data":data_list
            })
        # 添加购物车信息
        def post(self,request):
            data = request.data
            uid = data.get('uid','')
            gid = 'a'+ str(data.get('gid','0'))
            count = data.get('count',0)
            # 存入redis
            key = 'cart_'+ str(uid)
            self.conn.hset(key,gid,count)
            return Response({
                "msg":"已设置"
            })
    
      # 删除购物车信息
        def delete(self,request):
            uid = request.data.get('uid',"0")
            gid = request.data.get('gid',"0")
            key = 'cart_{}'.format(uid)
            field = 'a{}'.format(gid)
            tmp = self.conn.hdel(key,field)
            print(tmp)
            return Response({
                "msg":""
            })
  • 前端

    
    

你可能感兴趣的:(django-redis 和 vue 实现的购物车)