Django用户认证系统 User对象解析
User对象
User对象是认证系统的核心。用户对象通常用来代表网站的用户,并支持例如访问控制、注册用户、关联创建者和内容等。在Django认证框架中只有一个用户类,例如超级用户('superusers')或('staff')用户只不过是相同用户对象设置了不同属性而已。
缺省字段Fields
username
用户名,必需字段。30个字符或更少,可以包含_,@,+,.和-字符。
first_name
可选。30charactersorfewer.
last_name
可选。30charactersorfewer.
email
邮箱,可选。Emailaddress.
password
密码,必需。Django不是以明文存储密码的,而是存储哈希值。
groups
用户组。Many-to-manyrelationshiptoGroup
user_permissions
用户权限。Many-to-manyrelationshiptoPermission
groups=models.ManyToManyField(Group,verbose_name=_('groups'), blank=True,help_text=_('Thegroupsthisuserbelongsto.Auserwill' 'getallpermissionsgrantedtoeachof' 'theirgroups.'), related_name="user_set",related_query_name="user") user_permissions=models.ManyToManyField(Permission, verbose_name=_('userpermissions'),blank=True, help_text=_('Specificpermissionsforthisuser.'), 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时,用户获得全部权限。
defhas_perm(self,perm,obj=None): """ ReturnsTrueiftheuserhasthespecifiedpermission.Thismethod queriesallavailableauthbackends,butreturnsimmediatelyifany backendreturnsTrue.Thus,auserwhohaspermissionfromasingle authbackendisassumedtohavepermissioningeneral.Ifanobjectis provided,permissionsforthisspecificobjectarechecked. """ #Activesuperusershaveallpermissions. ifself.is_activeandself.is_superuser: returnTrue #Otherwiseweneedtocheckthebackends. 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_nameplusthelast_name,withaspaceinbetween.
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的格式是"
has_perms(perm_list,obj=None)
用户是否具有权限列表中的每个权限。
创建用户
由于User对象的密码不是明文存储的,所以创建User对象时与通常的Modelcreate不同,需用内置的create_user()方法。
>>>fromdjango.contrib.auth.modelsimportUser >>>user=User.objects.create_user('john','lennon@thebeatles.com','johnpassword') #Atthispoint,userisaUserobjectthathasalreadybeensaved #tothedatabase.Youcancontinuetochangeitsattributes #ifyouwanttochangeotherfields. >>>user.last_name='Lennon' >>>user.save()
当然也可以在admin界面中添加用户。
创建superusers
$pythonmanage.pycreatesuperuser--username=joe--email=joe@example.com
修改密码
使用内置的set_password()方法。
>>>fromdjango.contrib.auth.modelsimportUser >>>u=User.objects.get(username='john') >>>u.set_password('newpassword') >>>u.save()
验证用户
authenticate()
验证给出的username和password是否是一个有效用户。如果有效,则返回一个User对象,无效则返回None。
fromdjango.contrib.authimportauthenticate user=authenticate(username='john',password='secret') ifuserisnotNone: #thepasswordverifiedfortheuser ifuser.is_active: print("Userisvalid,activeandauthenticated") else: print("Thepasswordisvalid,buttheaccounthasbeendisabled!") else: #theauthenticationsystemwasunabletoverifytheusernameandpassword print("Theusernameandpasswordwereincorrect.")
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。