定义用户模型
1.django默认用户认证系统
- django自带用户认证系统
- 他处理用户账号、组、权限以及基于cookie的用户会话
- django认证系统位置
- django.contrib.auth包含认证框架的核心和默认的模型
- djangio认证系统同时处理认证和授权
- 认证:验证一个用户是否是他声称的那个人,可以用于账号登陆
- 授权:授权决定了一个通过了认证的用户允许做什么
- django认证系统包含的内容
- 用户:用户模型类,用户认证
- 权限:表示一个用户是否可以做一个特定的任务,MIS系统经常用到
- 组:对多个具有相同权限的用户进行统一管理,MIS系统常用到
- 密码:一个可配置的密码哈希系统,设置密码、密码校验
2.django默认用户模型类
-
django认证系统中提供了用户模型类User保存用户数据
- User对象是认证系统的核心
-
django认证系统用户模型类位置
-
class User(AbstractUser): """ Users within the Django authentication system are represented by this model. Username and password are required. Other fields are optional. """ class Meta(AbstractUser.Meta): swappable = "AUTH_USER_MODEL"
-
2.父类AbstractUser介绍
-
User对象基本属性
- 创建用户比选:username、password
- 创建用户可选:email、first_name、last_login、date_joined、is_active、is_staff、is_superuse
- 判断用户是否通过认证:is_authenticated
- USERNAME_FIELD:可以修改用户名认证字段
-
创建用户的方法
user = User.object.create_user(username,password,**extra_fields)
-
用户认证的方法
from django.contrib.auth import authenticate user = authenticate(username=username,password=password,**kwargs)
-
处理密码的方法
设置密码:set_password(raw_password) 校验密码:check_password(raw_password)
3.自定义用户模型类
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
class User(AbstractUser):
# 手机号
mobile = models.CharField(max_length=11, unique=True, blank=False)
# 头像信息
avatar = models.ImageField(upload_to="avatar/%Y%m%d/", blank=True)
# 简介信息
user_desc = models.CharField(max_length=500, blank=True)
class Meta:
db_table = 'tb_users'
verbose_name = '用户管理'
verbose_name_plural = verbose_name # admin后台显示
def __str__(self):
return self.mobile
4.创建迁移文件
python manage.py makemigrations users
5.通过迁移文件创建数据表
python manage.py migrate