用戶模型類(AbstractUser 介紹)


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'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM