首先簡單了解一下user的一些屬性
User對象
User對象是認證系統(tǒng)的核心漩蟆。用戶對象通常用來代表網(wǎng)站的用戶,并支持例如訪問控制妓蛮、注冊用戶怠李、關(guān)聯(lián)創(chuàng)建者和內(nèi)容等。在Django認證框架中只有一個用戶類蛤克,例如超級用戶('superusers’)或('staff')用戶只不過是相同用戶對象設(shè)置了不同屬性而已捺癞。
缺省字段Fields
username
用戶名,必需字段。30個字符或更少构挤,可以包含 _, @, +, . 和 - 字符髓介。
first_name
可選。 30 characters or fewer.
last_name
可選筋现。 30 characters or fewer.
email
郵箱,可選唐础。 Email address.
password
密碼,必需箱歧。Django不是以明文存儲密碼的,而是存儲哈希值一膨。
groups
用戶組呀邢。Many-to-many relationship to Group
user_permissions
用戶權(quán)限。Many-to-many relationship to Permission
groups = models.ManyToManyField(Group, verbose_name=_('groups'),
blank=True, help_text=_('The groups this user belongs to. A user will '
'get all permissions granted to each of '
'their groups.'),
related_name="user_set", related_query_name="user")
user_permissions = models.ManyToManyField(Permission,
verbose_name=_('user permissions'), blank=True,
help_text=_('Specific permissions for this user.'),
related_name="user_set", related_query_name="user")
is_staff
Boolean豹绪。決定用戶是否可以訪問admin管理界面价淌。默認False。
is_active
Boolean瞒津。 用戶是否活躍,默認True蝉衣。一般不刪除用戶,而是將用戶的is_active設(shè)為False巷蚪。
is_superuser
Boolean病毡。默認False。當設(shè)為True時钓辆,用戶獲得全部權(quán)限剪验。
def has_perm(self, perm, obj=None):
"""
Returns True if the user has the specified permission. This method
queries all available auth backends, but returns immediately if any
backend returns True. Thus, a user who has permission from a single
auth backend is assumed to have permission in general. If an object is
provided, permissions for this specific object are checked.
"""
# Active superusers have all permissions.
if self.is_active and self.is_superuser:
return True
# Otherwise we need to check the backends.
return _user_has_perm(self, perm, obj)
last_login
上一次的登錄時間肴焊,為datetime對象前联,默認為當時的時間。
`user.last_login ``=` `timezone.now()`
date_joined
用戶創(chuàng)建的時間
方法Methods
is_anonymous()
是否是匿名用戶娶眷。
is_authenticated()
用戶是否通過驗證似嗤,登陸。
get_full_name()
返回first_name plus the last_name, with a space in between.
get_short_name()
返回first_name.
set_password(raw_password)
設(shè)置密碼届宠。
check_password(raw_password)
驗證密碼烁落。
get_group_permissions(obj=None)
返回用戶組權(quán)限的集合。
get_all_permissions(obj=None)
返回用戶所有的權(quán)限集合豌注。
has_perm(perm, obj=None)
用戶是否具有某個權(quán)限伤塌。perm的格式是 "<app label>.<permission codename>". 如: user.has_perm('user.addentry') 返回的是True或者False
這里的codename 我也不知道從django哪里去找,只能打開mysql里的表轧铁,查詢出codename, 后面知道再補上
has_perms(perm_list, obj=None)
用戶是否具有權(quán)限列表中的每個權(quán)限每聪。
這里查過源碼,實在的方式其實是遍歷了perm_list然后每次使用 self.has_perm來進行判斷齿风,如果有一個為False那么全部為False
所以perm_list只需要將需要驗證的權(quán)限組織成一個列表就行药薯,如 perm_list = [ "<app label>.<permission codename>", "<app label>.<permission codename>"]