django之商品最近浏览记录实现
我们在浏览网页的时候经常会在购买商品的时候,发现有个最近浏览记录,显示你浏览过的商品,这些都是怎么做的?
其实主要用是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之商品最近浏览记录实现相关推荐
- 用JS中的cookie实现商品的浏览记录
最近在做一个购物车效果,为了实现商品的浏览记录效果可是让我百般周折,避免以后忘记特写此随笔与大家共享,希望博友们看后有所收获. 第一步:在一个公用的js文件下getCookie("liula ...
- JAVAEE model1模型实现商品浏览记录(去除重复的浏览记录)(一)
在javaee中Model1模型是以jsp页面为中心的,jsp既要对浏览器的request做出逻辑处理(使用javabean),访问数据库也要显示出相关的页面. 在model1模型中 没有servle ...
- 电商系统中用户的浏览记录功能是如何实现的
知识点:Django框架.redis数据库 1.业务需求分析 当登录用户在浏览商品的详情页时,我们可以把详情页这件商品信息存储起来,作为该登录用户的浏览记录:用户未登录,我们不记录其商品的浏览记录. ...
- php写浏览记录,php如何浏览历史记录
这篇文章主要介绍了php浏览历史记录的方法,涉及php操作cookie的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了php浏览历史记录的方法. 具体实现方法如下:/** * 商品历史浏 ...
- Django中--使用redis存储历史浏览记录
class UserInfoView(LoginRequiredMixin, View):'''用户中心-信息页'''def get(self, request):'''显示'''# Django会给 ...
- Jsp 案例:商品浏览记录
Jsp 案例:商品浏览记录 采用Model1(Jsp+Javabean)实现 实现DBHelper类:操作数据库 创建实体类 创建业务逻辑类(DAO) 创建页面层 功能说明 项目分为商品展示页面和商品 ...
- 【JSP篇】——cookie之商品浏览记录的实现:4.显示商品的详细信息
学习上一节:3.显示当前所有的商品效果与功能的实现 学习下一节:5.cookie实现前五条浏览记录 1.功能介绍 前面我们实现了商品所有信息的显示,接下来要实现某一商品详细信息的显示.那么我们就要思考 ...
- Java Web学习(22): 阶段小项目实现商品浏览记录
案例项目:商品浏览记录的实现 项目架构:采用Model1模式(JSP+JavaBean)实现 具体的步骤: 1)实现DBHelper类 2)创建实体类 3)创建页面层 4)创建业务逻辑类(DAO) 项 ...
- Django 处理用户浏览记录
当用户点击某一个产品时就会有一个产品浏览记录,记录存进session 里,因为浏览记录是多条,所以session存的应该是个列表 # 判断是否登录,在登录状态下操作 if user:# 先取sessi ...
最新文章
- mysql单列索引和多列索引_mysql 单列索引与多列索引
- 嫦娥之死天蓬元帅的转世
- 接受数据,table列表,外加判断
- P1387 最大正方形
- [JTA] Java事务api
- c++模板类静态成员变量_一文讲透父子类中静态变量,成员变量初始化顺序原理...
- gets函数用不了_函数篇:指数函数
- 基于kotlin的coroutines的生命周期管理
- 关于字节跳动小程序授权问题解决方案
- Excel 冻结首行
- html5 3d动画效果代码,精选9款迷人的HTML5 3D动画效果及源码
- Python match case结构化模式匹配
- 成都盛迈坤电商:提高店铺商品评分的方法
- php语句执行顺序,sql语句执行顺序是什么
- mysql lbs_LBS类数据服务对比分析 (一)
- 【MATLAB】遗传算法(GA)求解TSP问题
- 修改google搜索引擎非hk方法
- 矩阵合同,相似与等价 以及初等变换矩阵
- 受壁虎启发,材料公司Felsuma研发一种能黏在任何材质表面的“壁虎皮肤”
- regsvr32命令