Django學習筆記(6-2 使用者登入-2)
- 兩個login
def login(request):
......
if user is not None:
#這裡會報錯,因為有兩個login,所以很重要的一點,函式名稱不要和預設名稱一樣。否則就會使用混亂。否則就要寫全路徑
#這也說明了python的函式可以自己呼叫自己
login(request,user)
return render(request,"index.html")
else:
return render(request,"login.html")
......
改為
def user_login(request):
在session有效期內,即使沒有登陸也會自動登陸
- 自定義後臺auth的認證方法
重寫authenticate,以後user_login函式里面的authenticated驗證就是我們自己寫的了,而也不用更改user_login方法
from django.contrib.auth.backends import ModelBackend
from .models import UserProfile
class CustomBackend(ModelBackend):
def authenticate(self,username=None,password=None,**kwargs):
try:
user = UserProfile.objects.get(username=username)
#password是密文,so,不能password=password,因為使用者輸入的是明文呀
#userprofile繼承了adstractuser,所以有個check_password方法
if user.check_password(password):
return user
except Exception as e:
return None
- 把自定義的驗證邏輯註冊
setting.py
AUTHENTICATION_BACKENDS = (
‘users.views.CustomBackend',
#注意一定要加“,”特別是元組資料的時候
)
- 讓email也可以登陸
現在就可以在自定義的au裡面寫點自己的邏輯了
user = UserProfile.objects.get(username=username,)
#,是並集
username和eamil登陸是“或”關係,現在介紹Q
user = UserProfile.objects.get(Q(username=username)|Q(email=username),Q(password=password))
#並非全是並集,而是並集與交集的隨意排版
#把password去掉
user = UserProfile.objects.get(Q(username=username)|Q(email=username))
- 提示登陸錯誤
def login(request):
......
if user is not None:
login(request,user)
return render(request,"index.html")
else:
return render(request,"login.html",{"msg":"使用者名稱或密碼錯誤"})
......
{{ msg }}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/506/viewspace-2799295/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Django學習筆記(16)——擴充套件Django自帶User模型,實現使用者註冊與登入Django筆記套件模型
- vue-admin-template 學習筆記 登入實現Vue筆記
- Django筆記三十二之session登入驗證操作Django筆記Session
- substrate學習筆記2:substrate快速入門筆記
- Django學習筆記(15)——中介軟體Django筆記
- Django學習筆記(12)——分頁功能Django筆記
- Laravel——Web 實戰第三章註冊登入(2)(學習筆記)LaravelWeb筆記
- Django學習筆記(13)——Django的使用者認證元件,檢視層和QuerySet APIDjango筆記元件API
- django rest framework個人學習筆記(四)————Tutorial2.Request and ResponseDjangoRESTFramework筆記
- react學習筆記2React筆記
- Vue學習筆記2Vue筆記
- 學習筆記2(下)筆記
- RocketMQ學習筆記 2MQ筆記
- Python學習筆記(2)Python筆記
- Solidity學習筆記-2Solid筆記
- vue學習筆記-2Vue筆記
- hibernate學習筆記(2)筆記
- MySQL學習筆記2MySql筆記
- Django2學習筆記--引用本地靜態檔案css,js等Django筆記CSSJS
- 《深度學習入門》第 2 章 感知機 筆記深度學習筆記
- Latex排版學習筆記(2)——Latex新手入門教程筆記
- Django2 Web 實戰02-使用者註冊登入退出DjangoWeb
- koa2學習筆記筆記
- 2-SAT 學習筆記筆記
- Grub2 學習筆記筆記
- Django 筆記 - 特殊運算子 2Django筆記
- JavaScript入門學習學習筆記(上)JavaScript筆記
- Django學習筆記《二》圖書管理系統Django筆記
- (Django)18.3建立網頁:學習筆記主頁Django網頁筆記
- git入門學習筆記Git筆記
- Docker入門學習筆記Docker筆記
- Unity學習筆記--入門Unity筆記
- TS入門學習筆記筆記
- 【PostgreSQL】入門學習筆記SQL筆記
- 強化學習-學習筆記2 | 價值學習強化學習筆記
- 關於django reset_framework學習之路的筆記DjangoFramework筆記
- <node.js學習筆記(2)>Node.js筆記
- CryptoZombies學習筆記——Lesson2筆記