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

17.5 展示购物车缩略信息

分析

在商城首页、商品列表页、商品详情“我的购物车”,鼠标悬停时,以下拉框形式展示购物车缩略信息。

展示购物车缩略信息使用GET方式向后端发请求,获取 redis 和cookie中的购物车数据,不需要请求参数。响应数据为JSON,格式为:

{"code":"0","errmsg":"OK","cart_skus":[{"id":1,"name":"Apple Macbook pro 13.3英寸笔记本 银色","count":1,"default_image_url":"http://...."},...]
}

实现

在carts应用views.py中增加CartsSimpleView视图类

class CartsSimpleView(View):def get(self, request):"""购物车缩略图"""user = request.userif user.is_authenticated:# 登录状态redis_conn = get_redis_connection('carts')redis_cart = redis_conn.hgetall('cart_%s' % user.id)cart_selected = redis_conn.smembers('selected_%s' % user.id)cart_dict = {}for sku_id, count in redis_cart.items():cart_dict[int(sku_id)] = {'count': int(count),'selected': sku_id in cart_selected}else:# 未登录cart_str = request.COOKIES.get('carts')if cart_str:cart_dict = pickle.loads(base64.b64decode(cart_str))else:cart_dict = {}# 响应数据cart_skus = []sku_ids = cart_dict.keys()skus = SKU.objects.filter(id__in=sku_ids)for sku in skus:cart_skus.append({'id': sku.id,'name': sku.name,'count': cart_dict.get(sku.id).get('count'),'default_image_url': settings.STATIC_URL + 'images/goods/' + sku.default_image.url + '.jpg',})return JsonResponse({'code': RETCODE.OK, 'errmsg': 'OK', 'cart_skus': cart_skus})

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

path('carts/simple/', views.CartsSimpleView.as_view()),

将index.html list.html detail.html三个页面中之前补注释掉的“我的购物车”解注,鼠标移到上面就可看到效果。
在这里插入图片描述

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

相关文章:

  • JMeter(进阶篇)
  • 3D打印——给开发板做外壳
  • 蓝凌EKP产品:JSP 性能优化和 JSTL/EL要点检查列表
  • Trae 辅助下的 uni-app 跨端小程序工程化开发实践分享
  • Docker之自定义jkd镜像上传阿里云
  • Spring AI 集成阿里云百炼平台
  • vscode无法检测到typescript环境解决办法
  • SpringCloud 03 负载均衡
  • 向量数据库基础和实践 (Faiss)
  • QT 基础聊天应用项目文档
  • Flutter vs Pygame 桌面应用开发对比分析
  • Android原生(Kotlin)与Flutter混合开发 - 设备控制与状态同步解决方案
  • 安卓开发者自学鸿蒙开发2页面高级技巧
  • 第一阶段总结:你的第一个3D网页
  • 【牛客刷题】成绩统计与发短信问题详解
  • OpenMemory MCP发布!AI记忆本地共享,Claude、Cursor一键同步效率翻倍!
  • 【FreeRTOS】刨根问底6: 应该如何防止任务栈溢出?
  • JavaScript性能优化实战(四):资源加载优化
  • FreeRTOS源码分析八:timer管理(一)
  • Hunyuan-GameCraft:基于混合历史条件的高动态交互游戏视频生成
  • 健身房预约系统SSM+Mybatis实现(三、校验 +页面完善+头像上传)
  • 基于Node.js+Express的电商管理平台的设计与实现/基于vue的网上购物商城的设计与实现/基于Node.js+Express的在线销售系统
  • Visual Studio Code 基础设置指南
  • iSCSI服务配置全指南(含服务器与客户端)
  • 12.web api 3
  • Docker入门:容器化技术的第一堂课
  • Chrome插件开发实战:todoList 插件
  • IP 分片和组装的具体过程
  • 二分查找(Binary Search)
  • 力扣刷题904——水果成篮