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.")


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值