基于 Django1.10 文档的深入学习(10)—— django.contrib.auth 之 User model

User model


Fields

class models.User

User objects have the following fields:

is_staff:
布尔值,指定此用户是否可以访问后台管理站点


is_active:
布尔值。 指定该用户帐户是否应被视为活动的。 我们建议您将此标志设置为False而不是删除帐户; 这样,如果您的应用程序对用户有任何外键,则外键不会中断。

这不一定控制用户是否可以登录。不需要验证后端来检查is_active标志,而是默认后端(ModelBackend)RemoteUserBackend。 如果要允许非活动用户登录,可以使用AllowAllUsersModelBackendAllowAllUsersRemoteUserBackend。 在这种情况下,您还需要自定义LoginView使用的AuthenticationForm,因为它拒绝非活动用户。 请注意,诸如has_perm()Django admin中的身份验证等权限检查方法对于非活动用户都返回False

在Django更改1.10:
在旧版本中,ModelBackend和RemoteUserBackend允许非活动用户进行身份验证。


Attributes

class models.User

is_authenticated:

只读属性始终为True(与AnonymousUser.is_authenticated相反,该属性始终为False)。 这是一种告诉用户是否已通过身份验证的方式。 这并不表示任何权限,也不会检查用户是否处于活动状态或是否有有效的会话。 即使正常情况下,您将在request.user上检查此属性,以确定是否已由AuthenticationMiddleware(表示当前登录的用户)填充,您应该知道任何User实例的此属性为True

Django框架中,`django.contrib.auth.models.User` 是用于用户认证和授权的核心组件。它提供了一套完整的用户管理系统,包括用户注册、登录、权限管理等功能。 ### 功能介绍 - **身份验证**:`User` 模型用于存储用户的登录信息,如用户名和密码,支持用户登录和注销操作。 - **权限管理**:可以为用户分配不同的权限,如访问特定视图或执行特定操作的权限。 - **用户信息存储**:除了基本的认证信息,还可以存储用户的其他信息,如姓名、电子邮件地址等。 ### 使用方法 #### 1. 导入 `User` 模型 ```python from django.contrib.auth.models import User ``` #### 2. 创建用户 ```python # 创建一个新用户 user = User.objects.create_user(username='testuser', password='testpassword') # 可选:设置用户的其他信息 user.email = 'testuser@example.com' user.save() ``` #### 3. 用户认证 ```python from django.contrib.auth import authenticate # 验证用户登录 user = authenticate(username='testuser', password='testpassword') if user is not None: # 用户验证成功 print("用户验证成功") else: # 用户验证失败 print("用户验证失败") ``` #### 4. 用户权限管理 ```python # 检查用户是否具有特定权限 if user.has_perm('app_label.permission_codename'): print("用户具有该权限") else: print("用户不具有该权限") ``` #### 5. 扩展用户模型 如果默认的 `User` 模型不能满足需求,可以通过继承 `AbstractUser` 类来创建自定义用户模型。示例如下: ```python from django.db import models from django.contrib.auth.models import AbstractUser class UserInfo(AbstractUser): nid = models.AutoField(primary_key=True) phone = models.CharField(max_length=11, null=True) avatar = models.FileField(upload_to="avatars/", default="avatar/default.png", verbose_name="头像") create_time = models.DateTimeField(auto_now_add=True) blog = models.OneToOneField(to="Blog", to_field="nid", null=True) def __str__(self): return self.username ``` 需要注意的是,若使用自定义用户模型,需在项目设置中指定该模型为默认用户模型 [^2][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值