Auth模塊
執行數據庫遷移命令后,自動生產多個表。
django_session
auth_user
直接訪問admin路由,需要輸入用戶名和密碼,就是參考auth_user表
管理員用戶才能進入
創建超級用戶
createsuperuser
from django.contrib import auth1.校驗用戶名和密碼是否正確
user_obj=auth.authenticate(request,username=username,password=password) # 用戶名和密碼兩個一個都不能少
# 該方法返回值:當用戶名和密碼正確的時候:返回的用戶對象
#不正確返回None2.保存登錄狀態
auth.login(request,user_obj)
# 這一句執行之后 request.user就能獲取當前登錄的用戶對象,user_obj3. 如何判斷當前用戶是否登錄 以及如何獲取當前登錄用戶對象
request.user.is_authenticated() # 判斷是否登錄 BOOL值
#*********在新版中貌似去掉括號才行。
request.user.is_authenticate4. 校驗用戶是否登錄from django.contrib.auth.decorators import login_required# 局部配置 @login_required(login_url='/login/') # /login/沒有登錄跳轉的頁面def xxx(request):return HttpResponse('xxx頁面') # 登錄之后的在視圖文件@login_requireddef xxx(request):return HttpResponse('xxx頁面')# 如果兩個都設置了 那么優先執行局部配置5.修改密碼request.user.check_password(old_password) # 校驗原密碼是否正確,返回boolrequest.user.set_password(new_password) #修改新密碼,需要保存request.user.save() # 一定要保存 6.注銷功能auth.logout(request) # 刪除了對應的session值
例子@login_requireddef xxx(request):auth.logout(request)return HttpResponse('xxx頁面')7.注冊功能#User.objects.create() # 創建普通用戶,密碼是明文。不推薦User.objects.createuser() # 創建普通用戶,基本都用它 User.objects.createsuperuser() # 創建超級用戶,郵箱要給數據
?setting.py
# 全局配置
在setting.py配置文件中寫以下代碼LOGIN_URL = '/login/'
?
?注冊功能例子:
擴展auth_user表
利用類的繼承# 1 類的繼承
from django.contrib.auth.models import User,AbstractUser# Create your models here.
class Userinfo(AbstractUser):phone = models.BigIntegerField()avatar = models.FileField()#**繼承了AbstractUser,執行數據庫遷移命令不會創建auth_user#Userinfo表中,出現auth_user所有字段,還有自定義字段#前提:1.沒有執行數據庫遷移命令。2.如果當前數據庫已經創建(auth_user),就要創建新的數據庫。3. 擴展的字段,不要與原先表中的字段沖突4. 需要在配置文件聲明#####"""django就會將userinfo表來替換auth_user表并且之前auth模塊所有的功能不變 參照的也是userinfo表"""
?settings.py
# 2 配置文件AUTH_USER_MODEL = '應用名.表名'AUTH_USER_MODEL = 'app01.Userinfo'
參考:Django之CSRF、token驗證、csrf裝飾器、auth模塊方法大全 - Jeff的技術棧 - 博客園