1. 程式人生 > >Django 專案總結(8)- 使用者瀏覽歷史記錄

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 指定

  • 遍歷取得每個商品物件,將資料序列化然後返回,前端進行展示