Django 项目总结(8)- 用户浏览历史记录

用户浏览历史记录

保存浏览历史

用户在访问每个商品详情页面时,都要记录浏览历史记录

历史记录中只需要保存多个商品的 sku_id 即可,而且需要保持添加 sku_id 的顺序,采用 redis 中列表来保存

'history_用户id': [sku_id列表]
  • 根据接口,前端每次访问详情页时会带上当前商品的 sku_id 来访问后端 POST

  • 后端写序列化器和视图,认证权限,用户必须登录

  • 判断 sku_id 是否存在,调用 create 方法进行创建

  • 取出商品 id 和 用户 id,取到对应的 redis 数据库对象

  • 在这里要对数据库进行多次操作,为了提高效率,使用 redis 中 pipeline 方法将所有操作 redis 的语句集中在一起,最后只需要访问一次 redis 数据库即可

  • 先移除已经存在的本商品浏览记录, 使用 list 的命令 lrem 该命令可以根据传入的 count 和 value 自动移除和 value 值相同的数据

  • 添加新的浏览记录,最新的数据要保存在前面,所以在列表中要从左边插入数据,使用 lpush 命令可以将数据从左边插入

  • 历史记录肯定不是展示所有,这里设置只展示 5 条,使用 list 的命令 ltrim 可以做到这样

  • LTRIM key start stop

    对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

  • 执行命令 pl.execute() ,将对 redis 数据库的操作进行执行,保存成功

查看历史浏览记录

这是在用户个人中心中显示的

  • 用户进入个人中心时,添加访问浏览历史记录的接口 GET

  • 后端编写 get 方法,用来返回数据

  • 取出当前 user_id

  • 链接 redis 数据库,根据 user_id 查询所有的浏览历史记录,使用 lrange 命令

  • LRANGE key start stop

    返回列表 key 中指定区间内的元素,区间以偏移量 startstop 指定

  • 遍历取得每个商品对象,将数据序列化然后返回,前端进行展示

猜你喜欢

转载自blog.csdn.net/qyf__123/article/details/84582832
今日推荐