auth模塊

auth模塊

當涉及到用戶相關功能的時候就能夠考慮使用auth模塊
特別提醒: 若是使用auth模塊就去使用全套的,不是本身寫一部分,用別人一部分python

如何建立超級用戶,用戶登陸django admin的後臺管理

在tools裏面的run manage.py 點擊事後輸入終端命令 createsuperuser數據庫

校驗用戶是否存在

先導包 from django.contrip import auth
user_obj = auth.authenticate(username=username, password=password)
在django.user表中校驗用戶是否存在
若是用戶存在就返回一個用戶對象,不存在就返回一個Nonedjango

保存用戶登陸狀態

auth.login(request, user_obj)
保存的是校驗用戶是否存在時生成的對象
只要保存了用戶登陸狀態,只要有request的地方就能夠拿到用戶對象(利用session實現,默認會執行一個request.session[鍵]=值)session

判斷當前用戶是否登陸

request.user.is_authenticated()
返回值是布爾類型函數

獲取當前用戶對象

在保存用戶狀態時就說過有request的地方就能夠拿到用戶對象
經過: request.user
拿到對象就能夠點取值到對象的一些字段屬性ui

如何給視圖函數加上校驗用戶是否登陸的登陸認證

先導入包:
from django.contrib.auth.decoration import login_required
這個就是一個裝飾器,有兩種配置方法加密

局部配置

局部須要指定跳轉頁面,具體格式以下,優先級最高url

@login_required(login_url='/login/')
def home(request):
    ...

全局配置

先到settings.py文件夾下面去添加一個配置code

LOGIN_URL='/login/'  # 指定沒有登錄默認跳轉的頁面爲 login 頁面

在添加裝飾器(全局不用指定,直接加)orm

@login_required
def home(request):
    ...

修改密碼

校驗原密碼是否正確

bool = request.user.check_password(old_password)

返回值是布爾類型

設置新密碼

request.user.set_password(new_password)
requset.user.save()

記住使用完set_password的時候必定要執行save,否則是無效操做

用戶的註冊

先導包
form django.contrib.auth.models import User
這一步操做就是至關於把User這張表取出來

# 建立普通用戶
User.objects.create_user(username=username, password=password)
# 建立超級用戶(建立超級用戶必需要傳郵箱參數)
User.objects.create_superuser(username=username, password=password, email='123@qq.com')

還有一種以前的往數據庫裏面直接建立一條數據的create 咱們是無法和auth一塊兒使用的,由於保存在數據庫裏面的密碼都是通過加密的,使用create 建立的數據中密碼是沒有通過加密的.

擴展auth_user表的字段

第一種(利用一對一關係):

很差用

第二種(繼承):

  1. 本身寫一個類,繼承原來的auth_user類,也就是繼承 AbstractUser
  2. 而後在setting配置文件中,經過AUTH_USER_MODEL = '應用名.表名'來告訴django要用新建的類來代替auth_user表
    AUTH_USER_MODEL = '應用名.表名' (必定要配置)
1. models.py 

# 先導入包
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    tel = models.IntegerField()
    ...

注意:

  1. 當繼承了AbstractUser以後,咱們自定義的字段名不能和以前的字段同樣
  2. 經過上面的方式繼承了的表還能夠使用auth的全部功能
  3. 若是在配置前已經執行了數據庫遷移命令,就不能再建立了.
相關文章
相關標籤/搜索