電商專案 2020-11-29

tomcatdog發表於2020-11-30

2020-11-28 工作內容

完成使用者登陸功能

1.使用者登陸邏輯分析

  • 核心:使用者的驗證和狀態保持
  • 狀態保持 :透過狀態保持,可以知道使用者是否登陸,方便後續判斷,開發功能

    使用Django自帶的login保持狀態

  • 設計登陸介面,返回首頁或者其他頁面

2.多使用者登陸

  • 需求:方便使用者使用使用者名稱或者手機號碼登陸
  • 後端邏輯:Django自帶的使用者認證authenticate只能傳遞使用者名稱,需要自定義,重寫這個方法

3.首頁展示使用者資訊

  • 選擇方案:首頁展示使用者資訊,有很多種方法,一種是後端伺服器渲染模板,響應前端,一種是前端傳送ajax請求,區域性重新整理,我選擇把使用者資料存入瀏覽器cookies中,Vue從cookies獲取資料渲染,因為這樣能方便後期生成首頁靜態頁面。

4.退出登入

  • 使用Django自帶的logout方法,能清楚session資料,解除狀態保持
  • 刪除cookies中的使用者資料,並響應回瀏覽器

5.使用者是否登入

  • 需求:限制一些功能只能登入使用者訪問
  • 後端邏輯:簡單的辦法是直接在功能介面判斷,但是這樣會有很多相同程式碼段
  • 方案選擇:方案有Django自帶的is_authenticate、login_required裝飾器、LoginRequiredMixin,選擇使用 login_required裝飾器,建立一個擴充功能類,來實現,並在setting中配置,方便後期增加各種功能。
  • 注意點:Django是否登陸驗證中,會自帶next引數,能返回訪問的時候URL地址,需要處理next引數,方便重定向到正確的URL。

總結

  1. Django調式錯誤,在寫URL路由時候,報錯如下,原來是在用別人模板時候,HTML檔案中,引用了infoURL地址,但是路由裡面並沒有,所以報錯了,排查好幾分鐘才發現,多長記性。

    raise NoReverseMatch(msg)
    django.urls.exceptions.NoReverseMatch: Reverse for 'info' not found. 'info' is not a valid view function or pattern name.
  2. Django自帶的使用者裝飾器login_required(),驗證不成功,會重定向到URL_LOGIN中的地址,注意修改

  3. v-if=’name’ v-else 不用帶引數

  4. v-cloak 能讓模板載入渲染完資料才顯示效果,避免了頁面渲染出現的閃爍問題

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章