django中級 --- User模塊

模塊說明:

User對象屬性

屬性 描述
username 必填; 少于等于30字符. 只允許字符,數(shù)字,下劃線
first_name 可選; 少于等于30字符.
last_name 可選; 少于等于30字符.
email 可選. 郵件地址.
password 必填. 密碼的摘要hash(Django不會存儲原始密碼),詳見密碼章節(jié)部分
is_staff 布爾值. 用戶是否擁有網(wǎng)站的管理權(quán)限.
is_active 布爾值. 是否允許用戶登錄, 設(shè)置為False,可以不用刪除用戶來禁止 用戶登錄
is_superuser 布爾值. 用戶是否擁有所有權(quán)限,而無需任何顯式的權(quán)限分配定義
last_login 用戶最后登錄的時間,缺省會設(shè)置為當(dāng)前時間
date_joined 創(chuàng)建用戶的時間,當(dāng)用戶創(chuàng)建時,缺省的設(shè)置為當(dāng)前的時間

User方法:

方法 描述
is_authenticated() 如果是真正的 User 對象,返回值恒為 True 。 用于檢查用戶是否已經(jīng)通過了認證。通過認證并不意味著 用戶擁有任何權(quán)限,甚至也不檢查該用戶是否處于激活狀 態(tài),這只是表明用戶成功的通過了認證。
is_anonymous() 如果是個 AnonymousUser ,返回值為 True , 如果是 User 對象,返回值為 False 。一般來 說, is_authenticated() 會比這個方法更常用些。
get_full_name() 返回值為: first_name 加上 last_name ,以 空格分隔。
set_password(passwd) 將用戶的密碼設(shè)置為給定的字符串,實際密碼已被哈希 處理。這時并不會真正保存 User 對象。
check_password(passwd) 如果給定的字符串通過了密碼檢查,返回 True 。 密碼比較已進行了哈希處理。
get_group_permissions() 返回用戶通過所屬組獲得的權(quán)限列表
get_all_permissions() 返回用戶通過所屬組和用戶自身權(quán)限所獲得的所有權(quán)限 列表。
has_perm(perm) 如果用戶擁有給定的權(quán)限,返回 True , perm 應(yīng)形如 "package.codename" 的格式。如果用戶處于 非激活狀態(tài),則總是返回 False 。
has_perms(perm_list) 如果用戶擁有所有給定的權(quán)限,返回 True 。 如果用戶處于非激活狀態(tài),則總是返回 False 。
has_module_perms(app_label) 如果用戶擁有任何給定 app_label 的權(quán)限,返回 True 。如果用戶處于非激活狀態(tài),則總是返回 False
get_and_delete_messages() 返回用戶的 Message 對象列表,并從隊列中刪除。
email_user(subj, msg) 給用戶發(fā)送電子郵件,用 DEFAULT_FROM_EMAIL 的設(shè) 置作為發(fā)件人。也可以用第3個參數(shù) from_email 來 覆蓋設(shè)置。
get_profile() 返回用戶的網(wǎng)站自定義profile,詳見Profile章節(jié)

模塊擴展:

django默認的user模塊字段固定,可能無法滿足我們對用戶管理的需求,所以需要自定義用戶表

定義方法:

  • AbstractUser
    自定義user模塊繼承該類,則可在原user模塊中添加自定義字段

  • AbstractBaseUser
    自定義user模塊繼承該類,則原user模塊只保留password, last_login,is_active三個字段

使用方法(以AbstractUser為例):

  1. 定義AUTH_USER_MODEL
yangke@YK-PC:~$ vim setting.py
AUTH_USER_MODEL = "appname.usermodel"
  1. 編輯自定義user模塊
yangke@YK-PC:~$ vim models.py
from django.db import models
from django.contrib.auth.models import AbstractUser

  class MyUser(AbstractUser):
      myfields =  models.CharField(max_length=80)
      ...

      def __unicode__(self):
          return self.name

  yangke@YK-PC:~$ vim views.py
  ......
  from django.contrib.auth import get_user_model

  def usertest(request):
      User = get_user_model()
      User.objects.create_user(username="admin",password="123456",......)
    ......

代碼解釋:
自定義User模塊注意以下幾點:

  1. 自定義User表必須繼承AbstractUser類
  2. 必須在setting.py中定義AUTH_USER_MODEL,格式為:AUTH_USER_MODEL = "appname.MyUser"

views調(diào)用自定義User:

  1. 導(dǎo)入get_user_model而不是from django.contrib.auth.models import User,因為從auth.models導(dǎo)入的是默認User模塊
  2. 在views方法中使用User = get_user_model()來獲取在setting中指定的自定義User模塊
  3. 通過2中的定義User,即可使用django的User方法來操作,例如以上代碼中創(chuàng)建用戶方法
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容