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

第16次:用户浏览记录

第1步:配置redis缓存

用户的浏览历史应存放在基于内存的redis,而非基于磁盘的mysql中,所以需要配置存放浏览历史的redis 3号缓存库。

在settings.py中缓存配置项中增加如下:

'history': {'BACKEND': 'django_redis.cache.RedisCache','LOCATION': 'redis://127.0.0.1:6379/3','OPTIONS': {'CLIENT_CLASS': 'django_redis.client.DefaultClient',}
}

第2步:保存与查询浏览记录

在users/views.py中增加如下代码

class UserBorwseHistory(LoginRequiredJSONMixin, View):"""用户浏览记录"""def get(self, request):"""获取用户浏览记录"""# 从redis取sku_id列表redis_conn = get_redis_connection('history')sku_ids = redis_conn.lrange('history_%s' % request.user.id, 0, -1)#     查询商品信息skus = []for sku_id in sku_ids:sku = SKU.objects.get(id=sku_id)skus.append({'id': sku.id,'name': sku.name,'default_image_url': 'http://localhost:8000/'+settings.STATIC_URL + 'images/goods/' + sku.default_image.url + '.jpg','price': sku.price})return JsonResponse({'code': RETCODE.OK, 'errmsg': 'OK', 'skus': skus})def post(self, request):# 保存浏览记录,detail.html页面会通过vue的mounted回调函数,在渲染时保存商品信息# 接收参数json_dict = json.loads(request.body.decode())sku_id = json_dict.get('sku_id')# 参数校验try:SKU.objects.get(id=sku_id)except SKU.DoesNotExist:return HttpResponseForbidden('sku不存在')# 保存redis_conn = get_redis_connection('history')pl = redis_conn.pipeline()user_id = request.user.idpl.lrem('history_%s' % user_id, 0, sku_id)  # 去重pl.lpush('history_%s' % user_id, sku_id)  # 存储pl.ltrim('history_%s' % user_id, 0, 4)  # 最后截取pl.execute()return JsonResponse({'code': RETCODE.OK, 'errmsg': 'OK'})

第3步:在users应用下urls.py增加路由模式

path('browse_histories/', views.UserBorwseHistory.as_view())
http://www.lryc.cn/news/595082.html

相关文章:

  • 关于java8里边Collectors.toMap()的空限制
  • React探索高性能Tree树组件实现——react-window、react-vtree
  • Spring Boot 3企业级架构设计:从模块化到高并发实战,9轮技术博弈(含架构演进解析)
  • spring boot windows linux 控制台 文件 乱码问题详解
  • Python100个库分享第37个—BeautifulSoup(爬虫篇)
  • 基于R语言的分位数回归技术应用
  • TOGAF之架构标准规范-机遇与解决方案
  • Implicit Reward as the Bridge: A Unified View of SFTand DPO Connections
  • React基础(1)
  • 深入解析Hadoop MapReduce Shuffle过程:从环形缓冲区溢写到Sort与Merge源码
  • 【Docker#3】Window 和 Linux 上 docker安装 相关知识
  • 华控的科技布局——全球化战略与合作生态
  • 多级缓存(亿级流量缓存)
  • CodeRush AI 助手进驻 Visual Studio:AiGen/AiFind 亮相(二)
  • 初识网络原理
  • CentOS 7安装 FFmpeg问题可以按照以下步骤进行安装
  • 数据结构:找出字符串中重复的字符(Finding Duplicates in a String)——使用哈希表
  • 使用Python绘制专业柱状图:Matplotlib完全指南
  • 4x4矩阵教程
  • 通过TPLink路由器进行用户行为审计实战
  • 首家!数巅AskBI通过中国信通院数据分析智能体专项测试
  • 基于Python的多传感器融合的障碍物检测与避障演示
  • C++实战案例:从static成员到线程安全的单例模式
  • 基于深度学习的图像分类:使用ResNet实现高效分类
  • python实现接收九数云的异常分析指标推送通知
  • 从env到mm_struct:环境变量与虚拟内存的底层实现
  • stm32mp157f-dk2安装镜像并且部署qt全流程
  • 西门子 WinCC预定义报警控件过滤条件
  • [特殊字符] Java反射从入门到飞升:手撕类结构,动态解析一切![特殊字符]
  • 【PHP安全】免费解密支持:zend52、zend53、zend54好工具