AbstractUser 介紹
- User 對象基本屬性:
- 創建用戶必選: username、password
- 創建用戶可選:email、first_name、last_name、last_login、date_joined、is_active 、is_staff、is_superuse
- 判斷用戶是否通過認證:is_authenticated
- 創建用戶的方法
user = User.objects.create_user(username, email, password, **extra_fields)
- 用戶認證的方法
Django 自帶用戶認證系統
它處理用戶賬號、組、權限以及基於 cookie 的用戶會話
- Django 認證系統同時處理認證和授權
- 認證:驗證一個用戶是否它聲稱的那個人,可用於賬號登錄.
- 授權:授權決定一個通過了認證的用戶被允許做什么.
- Django 認證系統包含的內容
- 用戶:用戶模型類、用戶認證.
- 權限:標識一個用戶是否可以做一個特定的任務,MIS 系統常用到.
- 組:對多個具有相同權限的用戶進行統一管理,MIS 系統常用到.
- 密碼:一個可配置的密碼哈希系統,設置密碼、密碼校驗.
from django.contrib.auth import authenticate
#進行認證校驗, 查看用戶是否是聲明的那一個
user = authenticate(username=username, password=password, **kwargs)
- 處理密碼的方法
設置密碼:set_password(raw_password)
校驗密碼:check_password(raw_password)
自定義用戶模型類
# 導入
from django.db import models
from django.contrib.auth.models import AbstractUser
# 我們重寫用戶模型類, 繼承自 AbstractUser
class User(AbstractUser):
"""自定義用戶模型類"""
# 在用戶模型類中增加 mobile 字段
mobile = models.CharField(max_length=11, unique=True, verbose_name='手機號')
# 對當前表進行相關設置:
class Meta:
db_table = 'tb_users'
verbose_name = '用戶'
verbose_name_plural = verbose_name
# 在 str 魔法方法中, 返回用戶名稱
def __str__(self):
return self.username
指定用戶模型類
- Django 用戶模型類是通過全局配置項 AUTH_USER_MODEL 決定的
又因為我們重寫了用戶模型類, 所以我們需要重新指定默認的用戶模型類: - 在 dev.py 文件中添加如下代碼:
# 指定本項目用戶模型類
AUTH_USER_MODEL = 'users.User'