模塊說明:
User對象屬性
| 屬性 | 描述 |
|---|---|
| username | 必填; 少于等于30字符. 只允許字符,數(shù)字,下劃線 |
| first_name | 可選; 少于等于30字符. |
| last_name | 可選; 少于等于30字符. |
| 可選. 郵件地址. | |
| 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為例):
- 定義AUTH_USER_MODEL
yangke@YK-PC:~$ vim setting.py
AUTH_USER_MODEL = "appname.usermodel"
- 編輯自定義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模塊注意以下幾點:
- 自定義User表必須繼承AbstractUser類
- 必須在setting.py中定義AUTH_USER_MODEL,格式為:AUTH_USER_MODEL = "appname.MyUser"
views調(diào)用自定義User:
- 導(dǎo)入get_user_model而不是from django.contrib.auth.models import User,因為從auth.models導(dǎo)入的是默認User模塊
- 在views方法中使用User = get_user_model()來獲取在setting中指定的自定義User模塊
- 通過2中的定義User,即可使用django的User方法來操作,例如以上代碼中創(chuàng)建用戶方法