Django blog项目《五》:用户模块分析


用户模块主要是用户注册、用户登录、用户登出和修改密码。

对于用户模块来说,总体就是:

  1. 用户注册:判断用户字段是否符合要求,并对机器人操作进行阻拦,同时进行人工验证,都通过后保存进数据库。
  2. 用户登录:判断字段是否跟数据库中的一致,一致则进入到个人主页。
  3. 用户登出:删除该用户的登录session,并回到登录页面
  4. 修改密码:(待写)

用户模块总体分析

1. 数据库设计

  • 管理员表UserManager

    • 重写UserManager表,添加email字段
  • 用户表Users

    • 添加手机号
    • 添加email_activte

2. 用户注册

1. 用户名字段

1. 业务流程
  1. 判断用户名是否为空
  2. 判断用户名格式是否正确
  3. 判断是据库中是否已存在
  4. 返回给前端
2. 请求、地址、参数
  1. 请求方式:GET

  2. 请求地址:/username/(?P<username>\w{6,18})/

  3. 请求参数:

    参数名参数类型是否必传描述
    username字符串必传用户输入的用户名
3. 前端处理
  1. 鼠标移出用户名输入框后执行用户名前端校验
  2. 校验用户名是否为空
  3. 校验用户名格式是否正确
4. 后端处理
  1. 校验用户名是否已存在
  2. 返回给前端

2. 密码和确认密码字段

在注册逻辑里面处理

3. 手机号字段

1. 业务流程
  1. 判断手机号是否为空
  2. 判断手机号格式是否正确
  3. 判断是据库中是否已存在
  4. 返回给前端
2. 请求、地址、参数
  1. 请求方式:GET

  2. 请求地址:/mobile/(?P<mobile>1[3-9]\d{9})/

  3. 请求参数:

    参数名参数类型是否必传描述
    mobile字符串必传用户输入的手机号
3. 前端处理
  1. 鼠标移出手机号输入框后执行手机号前端校验
  2. 校验手机号是否为空
  3. 校验手机号格式是否正确
4. 后端处理
  1. 校验手机号是否已存在
  2. 返回给前端

4. 图形验证码字段

1. 业务流程
  1. 携带UUID到后端
  2. 将图形验证码保存到redis中
  3. 后端返回给前端图形验证码
2. 请求、地址、参数
  1. 请求方式:GET

  2. 请求地址:/image_code/<uuid:image_code_id>/

  3. 请求参数:

    参数名参数类型是否必传描述
    image_code_iduuid字符串必传前端JS生成
3. 前端处理
  1. 生成图形的uuid
  2. 携带uuid访问后端
4. 后端处理
  1. 利用插件captcha生成验证码和验证码图形
  2. 保存到redis数据库中
  3. 返回到前端

5. 短信验证码字段

1. 业务流程
  1. 判断手机号是否为空
  2. 判断手机号格式是否正确
  3. 判断是否有图形uuid
  4. 判断图形验证码是否为空
  5. 后端生成短信验证码
  6. 将短信验证码保存到redis中
  7. 判断短信验证码60秒内是否有重复发送
2. 请求、地址、参数
  1. 请求方式:POST

  2. 请求地址:/sms_code/

  3. 请求参数:

    参数名参数类型是否必传描述
    mobile字符串必传用户输入的手机号
    image_text字符串必传用户输入的图形验证码
    image_code_iduuid字符串必传前端JS生成
3. 前端处理
  1. 校验手机号是否为空
  2. 校验手机号格式是否正确
  3. 校验图形uuid是否为空
  4. 校验图形验证码是否为空
  5. 判断图形验证码格式是否正确
  6. 发送ajax请求,携带参数访问后端
4. 后端处理
  1. form表单校验
    1. 校验字段是否符合要求
    2. 校验图形验证码跟redis数据库中的是否一直
    3. 校验是否60秒内有重复发送短信
  2. views逻辑处理
    1. 获取前端传来的数据
    2. form表单成功后获取清洗后的数据
    3. 生成短信验证码
    4. 将短信验证码、短信存放在reids中
    5. 使用云通讯平台发送短信
    6. 将结果返回到前端

6. 注册

1. 业务流程
  1. 用户名

    • 判断用户名是否为空
    • 判断用户名格式是否正确
    • 判断数据库中是否存在
  2. 手机号

    • 判断手机号是否为空
    • 判断手机号格式是否正确
    • 判断是据库中是否已存在
  3. 密码和确认密码

    • 判断密码格式是否满足要求

    • 判断密码和确认密码是否一致

  4. 短信验证码

    • 判断短信验证码是否为空
    • 判断短信验证码和reids中的是否一致
  5. 保存到数据库

  6. 跳转到登录页面

2. 请求、地址、参数
  1. 请求方式:POST

  2. 请求地址:/register/

  3. 请求参数:

    参数名参数类型是否必传描述
    username字符串必传用户输入的用户名
    password字符串必传用户输入的密码
    re_password字符串必传用户输入的确认密码
    mobile字符串必传用户输入的手机号
    sms_code字符串必传用户输入的短信验证码
3. 前端处理
  1. 用户名

    • 判断用户名是否为空
    • 判断用户名格式是否正确
  2. 手机号

    • 判断手机号是否为空
    • 判断手机号格式是否正确
  3. 密码和确认密码

    • 判断密码格式是否满足要求

    • 判断密码和确认密码是否一致

  4. 短信验证码

    • 判断短信验证码是否为空
    • 判断短信验证码格式是否正确
  5. 构造ajax请求参数

  6. 发送ajax请求到后端

4. 后端处理
  1. form表单验证

    1. 校验字段是否符合要求
    2. 校验用户名格式是否正确和是否已被注册
    3. 校验手机号格式是否正确和是否已被注册
    4. 判断密码和确认密码是否一致
    5. 判断短信验证码和redis中的是否一致
  2. views逻辑处理

    1. 获取前端传来的参数
    2. 将前端传来的数据传递给form表单进行校验
    3. 获取校验成功后的数据
    4. 判断密码和确认密码是否一致
    5. 将数据保存到数据库
    6. 跳转到登录页面

3. 用户登录

全部在提交登录里面进行校验和逻辑处理。

1. 业务流程
  1. 判断用户名是否为空
  2. 判断用户名格式是否正确
  3. 判断密码是否为空
  4. 判断密码格式是否正确
  5. 构造ajax请求
  6. 判断用户数据是否和数据库中一致
  7. 返回到前端
2 请求、地址、参数
  1. 请求方式:POST

  2. 请求地址:/login/

  3. 请求参数:

    参数名参数类型是否必传描述
    login_name字符串必传用户输入的登录名
    password字符串必传用户输入的密码
    remember_me布尔值必传用户勾选的记住密码
3.前端处理
  1. 校验用户名是否为空
  2. 校验用户名格式是否正确
  3. 校验密码是否为空
  4. 校验密码格式是否正确
  5. 构造ajax请求参数
  6. 发送ajax请求到后端
4. 后端处理
  1. form表单验证
    1. 校验字段是否满足要求
    2. 单独校验login_name,判断是用户名还是手机号
    3. 获取请求后的数据,并从mysql数据库中获取该用户的信息
    4. 判断是否有获取到该账号
    5. 判断用户名和密码是否匹配
    6. 判断是否有勾选记住密码
    7. 设置登录session信息
    8. 进行登录跳转
  2. views逻辑处理
    1. 获取前端传来的数据
    2. 将前端传来的数据和request传递给form表单进行校验
    3. 将数据返回给前端

4. 用户登出

直接使用django内置的logout函数来进行登出处理。

到这里用户模块的分析基本就算完成了。接下来就是具体的实现过程了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值