如何使用Django默認的Auth權(quán)限管理系統(tǒng)
1.Django默認已經(jīng)提供了認證系統(tǒng)Auth模塊。
認證系統(tǒng)包含:
- 用戶管理
- 權(quán)限
- 用戶組
- 密碼哈希系統(tǒng)
- 用戶登錄或內(nèi)容顯示的表單和視圖
- 一個可插拔的后臺系統(tǒng) admin
Django默認用戶的認證機制依賴Session機制,我們在項目中將引入JWT認證機制,將用戶的身份憑據(jù)存放在Token中,然后對接Django的認證系統(tǒng),幫助我們來實現(xiàn):
- 用戶的數(shù)據(jù)模型
- 用戶密碼的加密與驗證
- 用戶的權(quán)限系統(tǒng)
auth存在的位置 External Libraries\site-packages\django\contrib\..其中包括auth模塊和admin模塊.
2.Django用戶模型
Django認證系統(tǒng)中提供了用戶模型類User保存用戶的數(shù)據(jù),模型保存位置:D:\anaconda\Lib\site-packages\django\contrib\auth\models.py,默認的User包含以下常見的基本字段:
| 字段名 | 字段描述 |
|---|---|
username | 必選。150個字符以內(nèi)。 用戶名可能包含字母數(shù)字,_,@,+ . 和-個字符。 |
first_name | 可選(blank=True)。 少于等于30個字符。 |
last_name | 可選(blank=True)。 少于等于30個字符。 |
email | 可選(blank=True)。 郵箱地址。 |
password | 必選。 密碼的哈希加密串。 (Django 不保存原始密碼)。 原始密碼可以無限長而且可以包含任意字符。 |
groups | 與Group 之間的多對多關(guān)系。 |
user_permissions | 與Permission 之間的多對多關(guān)系。 |
is_staff | 布爾值。 設(shè)置用戶是否可以訪問Admin 站點。 |
is_active | 布爾值。 指示用戶的賬號是否激活。 它不是用來控制用戶是否能夠登錄,而是描述一種帳號的使用狀態(tài)。 |
is_superuser | 是否是超級用戶。超級用戶具有所有權(quán)限。 |
last_login | 用戶最后一次登錄的時間。 |
date_joined | 賬戶創(chuàng)建的時間。 當(dāng)賬號創(chuàng)建時,默認設(shè)置為當(dāng)前的date/time。 |
常用方法:
set_password(raw_password)
設(shè)置用戶的密碼為給定的原始字符串,并負責(zé)密碼的。 不會保存User 對象。當(dāng)None為raw_password 時,密碼將設(shè)置為一個不可用的密碼。
check_password(raw_password)
如果給定的raw_password是用戶的真實密碼,則返回True,可以在校驗用戶密碼時使用。
管理器方法:
管理器方法即可以通過User.objects. 進行調(diào)用的方法。
create_user(username, email=None, password=None, **extra_fields)
創(chuàng)建、保存并返回一個User對象。
create_superuser(username, email, password, **extra_fields)
與create_user() 相同,但是設(shè)置is_staff 和is_superuser 為True。
3.自定義User對象
因為系統(tǒng)默認自帶的user對象很多屬性和功能并不是我自己需要的,所以需要我們自己重新定義一個user對象.
第一步:創(chuàng)建一個user app
python manage.py startapp user
創(chuàng)建自定義user對象models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
class user(AbstractUser):
# 聲明自定義user對象
mobile=models.CharField(max_length=11,unique=True,verbose_name="手機號碼")
avatar=models.ImageField(upload_to="avatar",verbose_name="用戶頭像")
class Mata:
db_table="user"
verbose_name="用戶信息"
verbose_name_plural=verbose_name
第二步:配置相關(guān)信息
進入主app下面的setting文件中
注冊userapp

注冊自定義模型

第三步:執(zhí)行數(shù)據(jù)遷移
注意事項:如果是在第一次數(shù)據(jù)遷移之后,猜設(shè)置的AUTH_USER_MODEL自定義模型則會報錯,解決方法如下:
- 先把現(xiàn)有的數(shù)據(jù)庫導(dǎo)出備份,然后清掉數(shù)據(jù)庫中所有的數(shù)據(jù)表。
- 把開發(fā)者創(chuàng)建的所有子應(yīng)用下面的migrations目錄下除了__init__.py以外的所有遷移文件,只要涉及到用戶的,一律刪除
- 把django.contrib.admin.migrations目錄下除了__init__.py以外的所有遷移文件,全部刪除。
- 把django.contrib.auth.migrations目錄下除了__init__.py以外的所有遷移文件,全部刪除。
- 把reversion.migrations目錄下除了__init__.py以外的所有遷移文件,全部刪除。
- 把xadmin.migrations目錄下除了__init__.py以外的所有遷移文件,全部刪除。
- 接下來,執(zhí)行數(shù)據(jù)遷移,回顧第0步中的數(shù)據(jù),以后如果要修改用戶相關(guān)數(shù)據(jù),不需要重復(fù)本次操作,直接數(shù)據(jù)遷移即可。
刪除表

刪除user.migrations目錄下除了__init__.py以外的所有遷移文件,只要涉及到用戶的,一律刪除

把django.contrib.admin.migrations,django.contrib.auth.migrations,reversion.migrations,xadmin.migrations目錄下除了__init__.py以外的所有遷移文件,全部刪除

* 執(zhí)行數(shù)據(jù)遷移
在terminal中執(zhí)行:
python manage.py makemigrations python manage.py migrate
到此這篇關(guān)于如何使用Django默認的Auth權(quán)限管理系統(tǒng)的文章就介紹到這了,更多相關(guān)Django Auth權(quán)限管理系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python數(shù)據(jù)類型bytes?和?bytearray的使用與區(qū)別
本文主要介紹了python數(shù)據(jù)類型bytes?和?bytearray的使用與區(qū)別,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
tensorflow學(xué)習(xí)筆記之簡單的神經(jīng)網(wǎng)絡(luò)訓(xùn)練和測試
這篇文章主要為大家詳細介紹了tensorflow學(xué)習(xí)筆記,用簡單的神經(jīng)網(wǎng)絡(luò)來訓(xùn)練和測試,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04
Python?中如何使用requests模塊發(fā)布表單數(shù)據(jù)
requests 庫是 Python 的主要方面之一,用于創(chuàng)建對已定義 URL 的 HTTP 請求,本篇文章介紹了 Python requests 模塊,并說明了我們?nèi)绾问褂迷撃K在 Python 中發(fā)布表單數(shù)據(jù),感興趣的朋友跟隨小編一起看看吧2023-06-06
Pandas借助Numpy實現(xiàn)優(yōu)化的條件檢索代碼
Numpy其實是最早的處理數(shù)據(jù)的Python庫,它的核心ndarray對象,是一個高效的n維數(shù)組結(jié)構(gòu),本文主要介紹了Pandas如何借助Numpy優(yōu)化條件檢索,感興趣的可以了解下2024-03-03

