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

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

相关文章:

  • 【Linux】文件基础IO
  • Google Earth Engine | (GEE)逐月下载的MODIS叶面积指数LAI
  • Rust 入门 生命周期(十八)
  • 【牛客刷题】字符串按索引二进制1个数奇偶性转换大小写
  • C#高级语法_委托
  • java基础(十)sql的mvcc
  • 字节 Golang 大模型应用开发框架 Eino简介
  • 进程互斥的硬件实现方法
  • 私人AI搜索新突破:3步本地部署Dify+Ollama+QwQ,搜索能力MAX
  • 《动手学深度学习v2》学习笔记 | 1. 引言
  • Nacos 注册中心学习笔记
  • C++入门自学Day11-- String, Vector, List 复习
  • Kafka 面试题及详细答案100道(23-35)-- 核心机制2
  • 3D打印——给开发板做外壳
  • 最新技术论坛技术动态综述
  • XF 306-2025 阻燃耐火电线电缆检测
  • 【Linux | 网络】高级IO
  • JMeter(进阶篇)
  • (一)Python + 地球信息科学与技术 (GeoICT)=?
  • CentOS7安装部署GitLab社区版
  • 第3章 Java NIO核心详解
  • Portkey-AI gateway 的一次“假压缩头”翻车的完整排障记:由 httpx 解压异常引发的根因分析
  • java八股文-(spring cloud)微服务篇-参考回答
  • FreeRTOS在中断服务例程(ISR)中使用队列
  • 小白成长之路-k8s部署discuz论坛
  • Python爬虫-解决爬取政务网站的附件,找不到附件链接的问题
  • Blender模拟结构光3D Scanner(二)投影仪内参数匹配
  • scikit-learn/sklearn学习|多任务套索回归MultiTaskLasso解读
  • The Network Link Layer: 无线传感器中Delay Tolerant Networks – DTNs 延迟容忍网络
  • C++---迭代器删除元素避免索引混乱