Django用户认证系统(一)User对象
User对象
User对象是认证系统的核心。用户对象通常用来代表网站的用户,并支持例如访问控制、注册用户、关联创建者和内容等。在Django认证框架中只有一个用户类,例如超级用户('superusers’)或('staff')用户只不过是相同用户对象设置了不同属性而已。
缺省字段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
用户权限。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设为False。
is_superuser
Boolean。默认False。当设为True时,用户获得全部权限。
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
用户创建的时间
方法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)
设置密码。
check_password(raw_password)
验证密码。
get_group_permissions(obj=None)
返回用户组权限的集合。
get_all_permissions(obj=None)
返回用户所有的权限集合。
has_perm(perm, obj=None)
用户是否具有某个权限。perm的格式是 "<app label>.<permission codename>".
has_perms(perm_list, obj=None)
用户是否具有权限列表中的每个权限。
创建用户
由于User对象的密码不是明文存储的,所以创建User对象时与通常的Model create不同,需用内置的create_user()方法。
>>> from django.contrib.auth.models import User
>>> user = User.objects.create_user('john', 'lennon@thebeatles.com', 'johnpassword') # At this point, user is a User object that has already been saved
# to the database. You can continue to change its attributes
# if you want to change other fields.
>>> user.last_name = 'Lennon'
>>> user.save()
当然也可以在admin界面中添加用户。
创建superusers
$ python manage.py createsuperuser --username=joe --email=joe@example.com
修改密码
使用内置的set_password()方法。
>>> from django.contrib.auth.models import User
>>> u = User.objects.get(username='john')
>>> u.set_password('new password')
>>> u.save()
验证用户
authenticate()
验证给出的username和password是否是一个有效用户。如果有效,则返回一个User对象,无效则返回None。
from django.contrib.auth import authenticate
user = authenticate(username='john', password='secret')
if user is not None:
# the password verified for the user
if user.is_active:
print("User is valid, active and authenticated")
else:
print("The password is valid, but the account has been disabled!")
else:
# the authentication system was unable to verify the username and password
print("The username and password were incorrect.")
Django用户认证系统(一)User对象的更多相关文章
- django用户认证系统——拓展 User 模型
Django 用户认证系统提供了一个内置的 User 对象,用于记录用户的用户名,密码等个人信息.对于 Django 内置的 User 模型, 仅包含以下一些主要的属性: username,即用户名 ...
- django用户认证系统——拓展 User 模型2
Django 用户认证系统提供了一个内置的 User 对象,用于记录用户的用户名,密码等个人信息.对于 Django 内置的 User 模型, 仅包含以下一些主要的属性: username,即用户名 ...
- django用户认证系统——基本设置1
网站提供登录.注册等用户认证功能是一个常见的需求.因此,Django 提供了一套功能完整的.灵活的.易于拓展的用户认证系统:django.contrib.auth.在本教程中,我将向你展示 auth ...
- “Django用户认证系统”学习资料收集
首推追梦人物——Django用户认证系统 待续……
- django用户认证系统——重置密码7
当用户不小心忘记了密码时,网站需要提供让用户找回账户密码的功能.在示例项目中,我们将发送一封含有重置用户密码链接的邮件到用户注册时的邮箱,用户点击收到的链接就可以重置他的密码,下面是具体做法. 发送邮 ...
- django用户认证系统——修改密码6
再此之前我们已经完成了用户登录.注册.注销等功能,接下来让我们继续为用户提供修改密码的功能.该功能 Django 的 auth 应用也已经为我们提供,过程几乎和之前的登录功能完全一样. 编写修改密码模 ...
- django用户认证系统——登录4
用户已经能够在我们的网站注册了,注册就是为了登录,接下来我们为用户提供登录功能.和注册不同的是,Django 已经为我们写好了登录功能的全部代码,我们不必像之前处理注册流程那样费劲了.只需几分钟的简单 ...
- D django 用户认证系统
django认证系统包含三个部分:用户.权限和分组 安装 django项目默认启用了认证系统,如果不是使用django-admin.py创建项目的可以通过在settings配置文件里面的INSTALL ...
- Django用户认证系统(二)Web请求中的认证
在每个Web请求中都提供一个 request.user 属性来表示当前用户.如果当前用户未登录,则该属性为AnonymousUser的一个实例,反之,则是一个User实例. 你可以通过is_authe ...
随机推荐
- 3月3日[Go_deep]Populating Next Right Pointers in Each Node
原题:Populating Next Right Pointers in Each Node 简单的链表二叉树增加Next节点信息,没什么坑.不过还是WA了两次,还是有点菜,继续做,另外leetcod ...
- 九度 1420 Jobdu MM分水果 -- 动态规划、深度优先搜索
题目地址:http://ac.jobdu.com/problem.php?pid=1420 题目描述: Jobdu团队有俩PPMM,这俩MM干啥都想一样.一天,富强公司给团队赞助了一批水果,胡老板就把 ...
- 屏蔽ubuntu桌面鼠标右键以及Ctrl Alt F*
1.屏蔽右键: xmodmap -e "pointer = 1 2 99"xmodmap -e 'pointer = 1 2 0 4 5 6 7 8 9' #xmodmap -e ...
- fopen vs fsocketopen vs curl
http://stackoverflow.com/questions/2647170/curl-vs-fopen-vs-fsocketopen http://stackoverflow.com/que ...
- 判断浏览器js代码
(function(){ var UA = {}; var ua = navigator.userAgent.toLowerCase(),s; UA.ie = (s = ua.match(/(msie ...
- c#怎么获取当前页面的url
Request.ApplicationPath: /testwebRequest.CurrentExecutionFilePath: /testweb/default.aspxRequest.File ...
- 【解惑】深入jar包:从jar包中读取资源文件
[解惑]深入jar包:从jar包中读取资源文件 http://hxraid.iteye.com/blog/483115 TransferData组件的spring配置文件路径:/D:/develop/ ...
- mac下安装pcntl
Now you need to find out what version of PHP is installed on OSX $ php -vPHP 5.3.10 with Suhosin-Pa ...
- CodeIgniter 框架---学习笔记
1.输出sql语句:echo $this->db->last_query();
- VLAN和Trunk
Vlan实验题: 如图所示 解答过程 (一)相同vlan之间的设备全连通 1. 在SW1和SW2上分别创建vlan2和vlan3, 命令如下 SW1# vlan database SW1(vlan)# ...