用戶認證系統
一 導入auth模塊
from django.contrib.auth.models import User
from django.contrib import auth
auth模塊的操作針對的就是auth_user表
二 auth模塊的方法
1 authenticate() 用戶驗證函數。驗證成功,返回一個名稱為用戶登錄名的User對象,這個對象可以調用auth_user表中的屬性。驗證失敗,返回None。
def login(request): if request.method==‘POST‘: username=request.POST.get(‘username‘) password=request.POST.get(‘password‘) user=auth.authenticate(username=username,password=password) print(user,type(user)) return render(request,‘login.html‘) return render(request,‘login.html‘)
輸出:
zuo <class ‘django.contrib.auth.models.User‘>
2 login(request,user) 記錄session功能
user=auth.authenticate(username=username,password=password) if user: auth.login(request,user) return redirect(‘/index/‘)
3 logout(request) 註銷
核心 代碼 request.session.flush()
auth.logout(request)
PS request.user。獲取當前登錄的用戶,返回值是一個對象。 用在index頁面。確定當前是否有用戶登錄。如果不是匿名,說明login登錄成功。如果是匿名,說明login登錄不成功,跳轉login頁面。
一個AUTH_USER_MODEL 類型的對象,表示當前登錄的用戶。如果用戶當前沒有登錄,user 將設置為django.contrib.auth.models.AnonymousUser 的一個實例。你可以通過is_authenticated() 區分它們。
user 只有當Django 啟用AuthenticationMiddleware 中間件時才可用。
沒有用戶時:
def index(request): username=request.user print(username,type(username))
輸出:
AnonymousUser <class ‘django.utils.functional.SimpleLazyObject‘>
有用戶時:
輸出
zuo <class ‘django.utils.functional.SimpleLazyObject‘>
三 User對象的API
1 is_authenticated() 返回布爾值,判斷用戶是否登錄
2 創建新用戶
User.objects.create_user(username=‘‘,password=‘‘)
3 修改密碼
user=User.objects.get(username=‘xx‘)
user.set_password(‘新密碼‘) user是對象
user.save()
用戶認證系統