当前位置: 首页 > news >正文

17.3 全选购物车

分析与设计

登录状态下,用户勾选购物车页面的“全选”时,将购物车中所有商品的sku_id放在set集合, 再发送到前端;反选时,移除集合中的所有商品。

未登录状态下,逻辑一致。

实现

在carts应用views.py中新增如下视图类

class CartsSelectAllView(View):"""全选购物车"""def put(self, request):# 检验参数json_dict = json.loads(request.body.decode())selected = json_dict.get('selected')if selected:if not isinstance(selected, bool):return HttpResponseForbidden('参数selected有误')# 获取登录对象user = request.userif user.is_authenticated:#     登录状态下redis_conn = get_redis_connection('carts')redis_cart = redis_conn.hgetall('carts_%s' % user.id)cart_sku_ids = redis_cart.keys()print(cart_sku_ids)if selected:# 全选redis_conn.sadd('selected_%s' % user.id, *cart_sku_ids)else:redis_conn.srem('selected_%s' % user.id, *cart_sku_ids)return JsonResponse({'code': RETCODE.OK, 'errmsg': '全选购物车成功'})else:cart_str = request.COOKIES.get('carts')response = JsonResponse({'code': RETCODE.OK, 'errmsg': '全选购物车成功'})if cart_str:cart_dict = pickle.loads(base64.b64decode(cart_str.encode()))for sku_id in cart_dict:cart_dict[sku_id] = selectedcookie_cart_str = base64.b64encode(pickle.dumps(cart_dict)).decode()response.set_cookie('carts', cookie_cart_str, max_age=constants.CARTS_COOKIE_EXPIRES)return response

在carts应用下urls.py本新增路由

path('carts/selection/', views.CartsSelectAllView.as_view()),

http://www.dtcms.com/a/334389.html

相关文章:

  • 双椒派E2000D开发板LED驱动开发实战指南
  • 线程回收与线程间通信
  • [Python 基础课程]抽象类
  • 强化学习入门教程(附学习文档)
  • (第十七期)HTML图像标签详解:从入门到精通
  • 创新词汇表设计:UniVoc - 中英文混合处理的新方案
  • 安卓11 12系统修改定制化_____列举与安卓 9、10 系统在定制化方面的差异与权限不同
  • 数学建模Topsis法笔记
  • 非功能性需求设计:可解释性、鲁棒性、隐私合规
  • 【数据结构初阶】--排序(五):计数排序,排序算法复杂度对比和稳定性分析
  • 启发式合并 + 莫队 恋恋的心跳大冒险
  • 汽车大灯ABD算法介绍
  • 【算法】——力扣hot100常用算法技巧
  • leetcode_ 739 每日温度
  • 分享一个大数据的源码实现 基于Hadoop的二手车市场数据分析与可视化 基于Spark的懂车帝二手车交易数据可视化分析系统
  • Windows MCP.Net:革命性的 .NET Windows 桌面自动化 MCP 服务器
  • 嵌入式硬件篇---电容电感
  • 【C++】动态内存管理
  • 嵌入式硬件篇---电平转换电路
  • Python-深度学习(一)
  • Flutter开发 网络请求
  • Obot MCP 网关:用于安全管理 MCP 服务器采用的开源平台
  • DINOv3 论文精读(逐段解析)
  • 一文速通Python并行计算:14 Python异步编程-协程的管理和调度
  • CPP运算符优先级
  • 2508C++,支持rdma通信的高性能rpc库
  • 软件SPI实现(3):SPI协议测试(使用W25Q64)
  • Jenkins常见问题及解决方法
  • 计算机存储器分类和层次结构详解
  • 027 动静态库 —— 静态库