首頁 > 軟體

Django auth 應用模組詳解

2022-11-13 14:00:40

Django auth 應用模組

在設計開發任何一個站點的時候都需要有“使用者”的概念,從使用者的註冊、登陸、退出或者登出,到使用者的瀏覽、訂閱等,這些都需要使用者管理系統來實現。如果沒有時間積累和相關開發工作經驗,設計一個優秀的使用者系統是很困難的。那麼 Django 又是如何解決這個問題的呢?

一,Django的auth模組

Django 作為功能完善的 Web 框架充分考慮到這一點,它提供的 auth 模組能夠快速的實現使用者模組的基本功能。

新建專案後,Django 就把 auth 模組的所有功能提供給了開發者使用,開發者可以呼叫相應的介面,實現不同的功能需求。auth 模組定義了一張名叫 auth_user 的資料表,該表是 auth 模組的內建使用者表,開發者呼叫 auth 模組的相應介面生成此表,auth_user 表的欄位以及欄位型別,如下所示。

+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| id           | int(11)      | NO   | PRI | NULL    | auto_increment |
| password     | varchar(128) | NO   |     | NULL    |                |
| last_login   | datetime(6)  | YES  |     | NULL    |                |
| is_superuser | tinyint(1)   | NO   |     | NULL    |                |
| username     | varchar(150) | NO   | UNI | NULL    |                |
| first_name   | varchar(30)  | NO   |     | NULL    |                |
| last_name    | varchar(150) | NO   |     | NULL    |                |
| email        | varchar(254) | NO   |     | NULL    |                |
| is_staff     | tinyint(1)   | NO   |     | NULL    |                |
| is_active    | tinyint(1)   | NO   |     | NULL    |                |
| date_joined  | datetime(6)  | NO   |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+
11 rows in set (0.02 sec)#auth_user表

現在新建一張 auth_user 使用者表,併為此表新增一個新使用者 user。首先用如下方式引入 auth模組的 User 方法:

from django.contrib.auth.models import User
然後通過下面方法建立新使用者 user ,如下所示:

user=User.objects.create_user(username='JB51',password='123456',email='123456@qq.com')
save()#呼叫該方法儲存資料 

同時也可以使用如下方法修改密碼:

user.set_password(password='12345abc')#會對原密碼進行修改

根據具體的業務需求,還可以對錶的欄位進行增加、刪除、更改。

當涉及到使用者概念的時候也會產生使用者許可權問題,比如,如何劃分普通使用者和超級管理員使用者?針對許可權問題,Django 也提供瞭解決問題的方案,auth 模組提供了標準的許可權管理系統,它配合 Admin 後臺可以快速建立網站管理系統。

auth 模組提供了認證使用者功能,可以用下面方式引入後使用:

from django.contrib.auth import authenticate
然後使用關鍵字傳參的方法來傳遞使用者憑證,從而達到使用者認證的目的:

user = authenticate(username='CSDN',password='12345abc')

二,auth應用模組的其他作用

auth 模組還實現一些其它的功能,比如:

  • 使用者的登入(login)、退出(logout)功能,封裝在 django.contrib.auth 裡;
  • 使用者許可權系統封裝在 django.contrib.auth.models.Permission 中 ,可以對使用者的許可權進行增加、修改、刪除;
  • 使用者組可以通過 from django.contrib.auth.models.Group 匯入後來建立組或者刪除組。

列舉一些簡單應用方法:

user.user_permission.add(permission)#給某個使用者許可權的新增許可權
group = Group.objects.create(name=group_name)#新增新的使用者組
group.save() #儲存新建好的使用者組
group.delete()#刪除使用者組

三,auth模組總結

auth 模組提供的主要功能總結如下:

  • 實現並維護了使用者與使用者組的增加、刪除、更改功能;
  • 實現了使用者許可權與使用者組許可權的增加、刪除、更改;
  • 實現了可以自定義使用者許可權與使用者組許可權功能。

除了以上功能外,Django auth 模組還提供了許可權驗證等功能以及一些常用的方法。

auth 模組幫助開發人員提高了工作效率,因為每個 Web 站點的許可權管理模組或者使用者管理模組基本都是相同的邏輯,Django 的 auth 模組使開發者們不必在為一些重複性的邏輯進行構建。在實際開發工作中,使用者模組與許可權管理模組需要與實際相結合,開發者可以根據業務需求自定義或者重寫相應方法,以達到和實際業務相契合的目的。

到此這篇關於Django auth 應用模組的文章就介紹到這了,更多相關Django auth 應用模組內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com