6-11-12 django線上教育平臺----忘記密碼
忘記密碼功能成功修改過程如下:
在登入頁面點選忘記密碼按鈕,進入忘記密碼頁面,填寫賬戶和密碼,提交表單,後臺實現傳送郵件到郵箱,頁面跳轉發送郵件成功的頁面
點選郵箱的重置密碼連結,跳轉到重置密碼頁面,填寫新密碼和確定密碼,點選提交,密碼修改成功,還是跳轉到登入頁面
一、進入忘記密碼頁面
1、模板配置
新建forgetpwd.html,配置css,js,images等檔案
以css檔案為例
2、配置模板的url
3、編寫views.py,新建ForgetPwdView
4、配置login.html頁面中的忘記密碼按鈕的連結
5、測試以上是否配置正確
進入登入頁面,點選忘記密碼按鈕,跳轉到忘記密碼頁面,頁面顯示完整,則測試成功
頁面的驗證碼沒有顯示
顯示驗證碼
編寫forms.py
將資料傳給模板
前端接收資料
二、傳送郵件
忘記密碼頁面也是一個表單,在forms.py進行表單資料驗證,在views.py中寫提交的邏輯併發送郵件到郵箱,還需要配置url和模板
1、編寫post方法,傳送重置連結到郵箱,傳送成功後跳轉到傳送成功的頁面send_success.html
編寫post邏輯
完善email_send.py
錯誤資訊顯示,資料回填
2、測試以上邏輯
用之前註冊過的使用者測試
打斷點除錯
測試成功,收到郵件,頁面跳轉到傳送成功的頁面
三、點選重置密碼連結後,編寫重置密碼功能
1、點選重置密碼連結,編寫點選的邏輯get()
配置url
新建重置密碼頁面password_reset.html,在模板中新增input,要將修改哪個使用者告訴後臺,因為使用者是在未登陸的狀態下修改密碼的
點選連結進入密碼重置頁面,編寫邏輯
測試
檢視重置密碼頁面原始碼
2、進入重置密碼頁面後就是寫重置密碼的邏輯,還是一個表單
forms.py驗證表單資料
模板配置
配置提交後的url,這裡無法重用reset的連結,因為post時active_code引數傳遞不了,所以另寫一個
ModifyPwdView,實現表單提交邏輯
active_code引數傳不進來
url配置
重置密碼邏輯ModifyPwdView