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。
總結
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.
Django自帶的使用者裝飾器login_required(),驗證不成功,會重定向到URL_LOGIN中的地址,注意修改
v-if=’name’ v-else 不用帶引數
v-cloak 能讓模板載入渲染完資料才顯示效果,避免了頁面渲染出現的閃爍問題
本作品採用《CC 協議》,轉載必須註明作者和本文連結