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
中指定區間內的元素,區間以偏移量start
和stop
指定 -
遍歷取得每個商品物件,將資料序列化然後返回,前端進行展示