我们在浏览网页的时候经常会在购买商品的时候,发现有个最近浏览记录,显示你浏览过的商品,这些都是怎么做的?
其实主要用是cookie技术。
通常,每查看一个商品的详细信息,我们算作一次浏览记录。

假设下面为我们的商品详情页逻辑。

def detail(request,id):'''商品详情页:param request::return:'''goods = GoodsInfo.objects.get(id=id)goods.g_click += 1goods.save()# 获取新品推荐的商品news_goods = GoodsInfo.objects.all().order_by('-id')[:2]title = '天天生鲜-{}'.format(goods.g_title)is_detail = 1has_cart = 1goods = goodsresponse = render(request,'fs_goods/detail.html',locals())

那么接下来我们就需要先从本地cookies获取该商品的浏览记录信息,如果有记录则直接获取,反之就把当前这个商品作为浏览记录保存到cookies中。

cookies = request.COOKIES.get('goods_cookies','')

紧接着做出判断,

    if cookies == '':# 说明是第一次浏览商品详情,本地还没有生成商品的cookie信息,那么直接将这个商品的id存到cookie。cookies = id+';'       # '1;2;3;'elif cookies != '':# 说明不是第一次浏览商品详情,本地已经存在商品的cookie信息了;# 从'1;2;3;'这个cookie字符串中,取出每一个商品的idgoods_id_list = cookies.split(';')     # ['1','2','3']# 判断当前浏览的这个商品的id是否存在于这个goods_id列表中,存在说明商品之前浏览过,不存在说明之前没有浏览过 。

对于浏览记录,平时我们看到的大抵有两种。一是只考虑cookie是否存在,不考虑顺序问题。二是考虑cookie是否存在,同时考虑顺序问题,将最近点击的商品记录展示在最前面。
(1)、第一种方案,只考虑cookie是否存在,不考虑顺序问题

if id in goods_id_list:return response
else:goods_id_list.insert(0,id)cookies = ';'.join(goods_id_list)response.set_cookie('goods_cookies',cookies)return response

(2)、第二种方案,考虑cookie是否存在,同时考虑顺序问题,将最近点击的商品记录展示在最前面。(假设我们最近浏览记录只展示5条)

if id in goods_id_list:# 说明当前这个商品记录已经存在了,将这个记录从cookie中删除goods_id_list.remove(id)goods_id_list.insert(0,id)if len(goods_id_list) >= 6:goods_id_list = goods_id_list[:5]
cookies = ';'.join(goods_id_list)response.set_cookie('goods_cookies', cookies)
return response

最后将其从cookie中取出,将其展示到需要的地方。

# 从本地cookie读取商品的浏览记录cookies = request.COOKIES.get('goods_cookies','')goods_list = []if cookies != '':goods_id_list = cookies.split(';')for goods_id in goods_id_list:if goods_id:good = GoodsInfo.objects.get(id=int(goods_id))goods_list.append(good)else:   continuereturn render(request, 'fs_user/user_center_info.html', locals())

django之商品最近浏览记录实现相关推荐

  1. 用JS中的cookie实现商品的浏览记录

    最近在做一个购物车效果,为了实现商品的浏览记录效果可是让我百般周折,避免以后忘记特写此随笔与大家共享,希望博友们看后有所收获. 第一步:在一个公用的js文件下getCookie("liula ...

  2. JAVAEE model1模型实现商品浏览记录(去除重复的浏览记录)(一)

    在javaee中Model1模型是以jsp页面为中心的,jsp既要对浏览器的request做出逻辑处理(使用javabean),访问数据库也要显示出相关的页面. 在model1模型中 没有servle ...

  3. 电商系统中用户的浏览记录功能是如何实现的

    知识点:Django框架.redis数据库 1.业务需求分析 当登录用户在浏览商品的详情页时,我们可以把详情页这件商品信息存储起来,作为该登录用户的浏览记录:用户未登录,我们不记录其商品的浏览记录. ...

  4. php写浏览记录,php如何浏览历史记录

    这篇文章主要介绍了php浏览历史记录的方法,涉及php操作cookie的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了php浏览历史记录的方法. 具体实现方法如下:/** * 商品历史浏 ...

  5. Django中--使用redis存储历史浏览记录

    class UserInfoView(LoginRequiredMixin, View):'''用户中心-信息页'''def get(self, request):'''显示'''# Django会给 ...

  6. Jsp 案例:商品浏览记录

    Jsp 案例:商品浏览记录 采用Model1(Jsp+Javabean)实现 实现DBHelper类:操作数据库 创建实体类 创建业务逻辑类(DAO) 创建页面层 功能说明 项目分为商品展示页面和商品 ...

  7. 【JSP篇】——cookie之商品浏览记录的实现:4.显示商品的详细信息

    学习上一节:3.显示当前所有的商品效果与功能的实现 学习下一节:5.cookie实现前五条浏览记录 1.功能介绍 前面我们实现了商品所有信息的显示,接下来要实现某一商品详细信息的显示.那么我们就要思考 ...

  8. Java Web学习(22): 阶段小项目实现商品浏览记录

    案例项目:商品浏览记录的实现 项目架构:采用Model1模式(JSP+JavaBean)实现 具体的步骤: 1)实现DBHelper类 2)创建实体类 3)创建页面层 4)创建业务逻辑类(DAO) 项 ...

  9. Django 处理用户浏览记录

    当用户点击某一个产品时就会有一个产品浏览记录,记录存进session 里,因为浏览记录是多条,所以session存的应该是个列表 # 判断是否登录,在登录状态下操作 if user:# 先取sessi ...

最新文章

  1. mysql单列索引和多列索引_mysql 单列索引与多列索引
  2. 嫦娥之死天蓬元帅的转世
  3. 接受数据,table列表,外加判断
  4. P1387 最大正方形
  5. [JTA] Java事务api
  6. c++模板类静态成员变量_一文讲透父子类中静态变量,成员变量初始化顺序原理...
  7. gets函数用不了_函数篇:指数函数
  8. 基于kotlin的coroutines的生命周期管理
  9. 关于字节跳动小程序授权问题解决方案
  10. Excel 冻结首行
  11. html5 3d动画效果代码,精选9款迷人的HTML5 3D动画效果及源码
  12. Python match case结构化模式匹配
  13. 成都盛迈坤电商:提高店铺商品评分的方法
  14. php语句执行顺序,sql语句执行顺序是什么
  15. mysql lbs_LBS类数据服务对比分析 (一)
  16. 【MATLAB】遗传算法(GA)求解TSP问题
  17. 修改google搜索引擎非hk方法
  18. 矩阵合同,相似与等价 以及初等变换矩阵
  19. 受壁虎启发,材料公司Felsuma研发一种能黏在任何材质表面的“壁虎皮肤”
  20. regsvr32命令

热门文章

  1. 魔咒词典题解——牛客
  2. 中国计算机学会推荐国际学术刊物与国际会议
  3. Windows平台下私有云盘搭建
  4. 资料下载——《车载SOA软件架构技术规范1.0》
  5. 数据结构 : 单链表 头插入法尾插入法 及几种常用操作
  6. 【原创】西门子S7-1500PLC使用 EPOS控制V90伺服驱动器
  7. 爬取猫眼top100并存入csv文件中
  8. php iconv_strlen,iconv详解
  9. Boot Camp分区时强制终止导致硬盘空间消失的解决方法
  10. 纪录片《永远》,美让我们永得安慰!