原文:https://www.cnblogs.com/linxiyue/p/4060213.html

User对象

User对象是认证系统的核心。用户对象通常用来代表网站的用户,并支持例如访问控制、注册用户、关联创建者和内容等。在Django认证框架中只有一个用户类,例如超级用户('superusers’)或('staff')用户只不过是相同用户对象设置了不同属性而已。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

缺省字段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

1 2 3 4 5 6 7 8 9 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时,用户获得全部权限。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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对象,默认为当时的时间。

1 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()方法。

1 2 3 4 5 6 7 8 >>>  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

1 $ python manage.py createsuperuser  - - username = joe  - - email = joe@example.com

修改密码

使用内置的set_password()方法。

1 2 3 4 >>>  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。

1 2 3 4 5 6 7 8 9 10 11 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." )

  

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄