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

用户浏览历史记录

保存浏览历史

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

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

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

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

  • 判断 sku_id 是否存在,调用 create 方法进行建立数据库

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

  • 在这里要对数据库进行屡次操做,为了提升效率,使用 redis 中 pipeline 方法将全部操做 redis 的语句集中在一块儿,最后只须要访问一次 redis 数据库便可svg

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

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

  • 历史记录确定不是展现全部,这里设置只展现 5 条,使用 list 的命令 ltrim 能够作到这样xml

  • LTRIM key start stop

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

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

查看历史浏览记录

这是在用户我的中心中显示的

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

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

  • 取出当前 user_id

  • 连接 redis 数据库,根据 user_id 查询全部的浏览历史记录,使用 lrange 命令

  • LRANGE key start stop

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

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