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

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.xdnf.cn/news/18114.html

相关文章:

  • MyBatis 的 SQL 拦截器:原理、实现与实践
  • 【力扣-多数元素 JAVA/Python】
  • GaussDB 数据库架构师修炼(十三)安全管理(4)-数据库审计
  • Reading Coach-微软推出的免费AI阅读教练
  • 洛谷B3924 [GESP202312 二级] 小杨的H字矩阵
  • Wi-Fi 7 将如何重塑互联工作场所
  • Linux软件编程:进程与线程(线程的传参、属性、通信(互斥锁、信号量))
  • 存储、硬盘、文件系统、 IO相关常识总结
  • Boost库核心组件与应用
  • 图论Day4学习心得
  • MyBatis极速通关中篇:核心配置精讲与复杂查询实战
  • MATLAB R2010b系统环境(二)MATLAB环境的准备
  • 分享一个Oracle表空间自动扩容与清理脚本
  • Docker小游戏 | 使用Docker部署人生重开模拟器
  • 34 HTB Cat 机器 - 中等难度
  • 洛谷B3836 [GESP202303 二级] 百鸡问题
  • Hana IDE 安装吧报错
  • 每日算法刷题Day62:8.16:leetcode 堆8道题,用时2h30min
  • 【数据分享】大清河(大庆河)流域上游土地利用
  • GCN图卷积神经网络的Pytorch实现
  • 摩搭api 实现
  • 【最后203篇系列】032 OpenAI格式调用多模型实验
  • 博弈论07——Lemke-Howson 算法
  • Redis入门与背景详解:构建高并发、高可用系统的关键基石
  • SpringBoot自动配置原理(二)
  • [Linux] RAID存储技术
  • TDengine 3.3.7.0 版新功能(BLOB 数据类型)
  • LangGraph实战指南:如何构建一个深度研究Agent
  • 测试工程师的AI转型指南:从工具使用到测试策略重构
  • MySQL 配置性能优化赛技术指南