用户模型类
- 简述:django自带用户认证系统,它处理用户账号,组,权限以及基于cookie的用户会话
Django认证系统位置
○ django.contrib.auth包含认证框架的核心和默认的模型。
○ django.contrib.contenttypes是Django内容类型系统,它允许权限与你创建的模型关联。
● Django认证系统同时处理认证和授权
○ 认证:验证一个用户是否它声称的那个人,可用于账号登录。
○ 授权:授权决定一个通过了认证的用户被允许做什么。
● Django认证系统包含的内容
○ 用户:用户模型类、用户认证。
○ 权限:标识一个用户是否可以做一个特定的任务,MIS系统常用到。
○ 组:对多个具有相同权限的用户进行统一管理,MIS系统常用到。
○ 密码:一个可配置的密码哈希系统,设置密码、密码校验。
父类AbstractUser介绍(作为一个类,必然包含了属性和方法)
● User对象基本属性
○ 创建用户(注册用户)必选: username、password
○ 创建用户(注册用户)可选:email、first_name、last_name、last_login、date_joined、is_active 、is_staff、is_superuse
○ 判断用户是否通过认证(是否登录):is_authenticated
● 创建用户(注册用户)的方法,用户认证的方法,以及处理密码的方法 - 创建用户(注册用户)的方法:
user = User.objects.create_user(username, email, password, **extra_fields)
- 认证用户的 方法
from django.contrib.auth import authenticate
user = authenticate(username=username, password=password, **kwargs)
- 处理密码的方法:
设置密码:set_password(raw_password)
校验密码:check_password(raw_password)
自定义用户模型类的方法:
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, verbose_name='手机号')
class Meta:
db_table = 'tb_users'
verbose_name = '用户'
verbose_name_plural = verbose_name
def __str__(self):
return self.username
用户注册接口的设计和定义:
- 首先说明下设计接口的基本思路:
- 对于接口的设计,我们要根据具体的业务逻辑,设计出适合业务逻辑的接口,设计的具体思路如下:
- 分析要实现的业务逻辑是什么:
- 1.明确在这个业务中涉及到的几个相关子业务
- 2.将每个子业务当做一个接口来设计
- 分析接口的功能任务,明确接口 的访问方式和返回数据
- 请求方法(get post put delete)
- 请求地址
- 请求参数如:路径参数,查询字符串,表单和json等
- 相应数据(如HTML和json)
用户注册接口设计:
请求方法:POST
请求地址:/register/
请求参数:表单请求参数
参数名 | 类型 | 是否必传 | 说明 |
---|---|---|---|
username | string | 是 | 用户名 |
password | string | 是 | 密码 |
password2 | string | 是 | 确认密码 |
mobile | string | 是 | 手机号 |
sms_code | string | 是 | 短信验证码 |
allow | string | 是 | 是否同意用户协议 |
响应结果:
响应结果 | 响应内容 |
---|---|
注册失败 | 响应错误提示 |
注册成功 | 重定向到首页 |