在完成註冊功能以後,登陸功能就較爲簡單了,主要思路邏輯以下:
設置LoginView類負責登陸功能
設置get方法負責響應請求,反饋用戶登陸頁面
設置post方法 獲得用戶填寫的用戶名/手機號以及密碼和是否保持登陸狀態的選擇
校驗用戶名/手機號以及密碼是否填寫完整及合規
用Django自帶的authenticate函數校驗用戶名及密碼並相應結果
若是用戶勾選贊成保持登陸狀態,則設置session的過時時間,默認2周,若是用戶不一樣意,則設置session過時時間爲0
最後重定向至響應的頁面。後端
須要注意的是,Django中封裝的authenticate函數只設置了校驗username,若是須要用戶經過手機號也能登陸,那就須要將原有的方法進行修改,在使用一個新類(UsernameMobileBackend)繼承ModelBackend類,並在authenticate方法中增長mobile,
try:
if re.match(r'^1[3-9]\d{9}$', account): #username == 手機號
user = User.objects.get(mobile=account)
else:
user = User.objects.get(username=account)
except User.DoesNotExist:
return None
else:
return usersession
以後還要在setting文件中進行關聯設置
指定自定義用戶認證後端
AUTHENTICATION\_BACKENDS = ['apps.users.utils.UsernameMobileBackend']app