python 全栈开发 Django_ billshop 商城_ 注册功能的全部实现、含前后端和所有全功能验证

1. 短信验证码 封装单例类 的设计模式(先进的思维,请多模仿)

状态码000000表示测试发送成功。 关键隐私ID 等全部隐藏。
注意一小时内,只能发送三次。 这是容联云 规定。

现在优化代码为django相关参数的传递活代码

现在再看看有没有优化空间:

仔细看看在这里插入图片描述

这其实是类smsSDK
在这里插入图片描述
如果有多个用户都在 注册,那么如何让这个 类只实例化一次,就到下面的在这里插入图片描述
方法去?
那么就用到

单例(让第一个实例化, 后面所有的都用实例化之后的类属性走。)

类里面两个重要方法:new 和 init
new 方法是 创建类 init 是初始化类

优化完成,且验证啊发送成功
在这里插入图片描述

在这里插入图片描述

2. 短信验证码后端逻辑

请求方法 GET
请求地址 /sms_codes/(?P1[3-9]\d{9})/

参数名 类型 是否必传 说明
mobile string 是 手机号
image_code string 是 图形验证码
uuid string 是 唯一编号

响应结果:JSON
字段 状态码
说明 errmsg
code 错误信息

接口定义
在这里插入图片描述

在这里插入图片描述
根据业务逻辑, 写views:
在这里插入图片描述

注意, 这里我们只是凑巧命名成这样, 理论上,是要看前端 ajax 请求, 里面记不记得定义的 this.username等

在这里插入图片描述

注意, redis 中 用delete ,能删除任何对象,给举例看看del
在这里插入图片描述

对比图形验证码,注意,这里要返回的是前端的Json格式啊。
错误代码我们曾经定义过 200. 现在比如又要定义4001. 像这种可能复用的建议抽出来。定义为常数。

在这里插入图片描述
所以也用自己准备好的response_code.py ,直接放到utils下,因为 整个项目要用,不管app要用。
现在verifications\views 导入一下
在这里插入图片描述
在这里插入图片描述
因此,之前users\views 中的 200 状态码应该要改动了。 统一从response_code.py中找对应的。
在这里插入图片描述

在这里插入图片描述

生成6位随机数验证码
肯定用到random模块,所以在verifications\views中 import random先

在这里插入图片描述

保存短信验证码
在这里插入图片描述
发送短信验证码 响应结果
导入CCP这个类
from billshop.apps.verifications.libs.ronglianyu.ccp_sms import CCP
调用CCP 类中的send_message()方法

其中, CCP 如果不加(),就是没有实例化类,会报错

在这里插入图片描述

由于前端还没有写, 所以可以用postman 对现在完成的后端进行测试。

在这里插入图片描述

cmder 中差找redis中保存好的短信验证码,
和我手机收到的是一致的哦

在这里插入图片描述
到现在位置, 应该还有需要优化的功能,比如, 验证码的时效性是300秒,而且都是硬编码, 所以优化, 搞一个 提取图形验证码失效。
在这里插入图片描述
像这种常数量以后不可能到处去改,肯定要做常量,统一管理,
在这里插入图片描述
在verifications 下new一个constants.py 并优化
在这里插入图片描述

3. 短信验证码 前端逻辑

Vue绑定短信验证码界面
register.html
先注释原来的代码, 然后,复制 自己准备好的代码, code-refomat Code 格式一下。
在这里插入图片描述
现在发现,这里面的新的v-model等都没有定义,所以去register.js完善

在这里插入图片描述

通过前端运行, 查看源码是否被加载到了前端,来暂时验证功能一切顺利, 同时,可以在这里打断点调试,如果有问题, console里会提示
在这里插入图片描述

axios请求短信验证码 这是重点

整体如下图
在这里插入图片描述

分为验证码正确和不正确, 回调函数 等

在这里插入图片描述
在这里插入图片描述

4. 补全注册时短信验证业务逻辑

需要在users的views中,添加 短信验证码信息,(图形验证码不需要,因为已经在短信验证码时,进行了验证,图形码错误, 不可能发出短信验证码)

from django_redis import get_redis_connection
在这里插入图片描述
去前端尝试一次完整的注册, 注意,数据库中可以删除一次,否则重复了, 不好玩。
效果完美! 可是没有存到数据库,也没有重定向到首页啊。
在这里插入图片描述
来,那么继续搞
找到原因, 是之前不需要时,把forms 表单的sms_code 注释了。现在释放出来。
在这里插入图片描述
同时,再优化一下, 判断sms_code_server 要decode 之后才严谨
在这里插入图片描述
@@@ ajax 目前是那些注册时,失焦后的提示和规则提示。

非常完美的注册
在这里插入图片描述
同时,数据库中也有了
,时区我没有改回东八区,哈哈!
在这里插入图片描述

5. 避免频繁发送短信验证码

存在的问题:
• 虽然我们在前端界面做了60秒倒计时功能。
• 但是恶意用户可以绕过前端界面向后端频繁请求短信验证码。
解决办法:
• 在后端也要限制用户请求短信验证码的频率。60秒内只允许一次请求短信验证码。
• 在Redis数据库中缓存一个数值,有效期设置为60秒。

避免频繁发送短信验证码逻辑分析
在这里插入图片描述

分前后端:

避免频繁发送短信验证码逻辑实现
后端验证
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
前端优化
在这里插入图片描述

启动执行,看看效果


前端 判断
在这里插入图片描述
在这里插入图片描述
注意解锁
在这里插入图片描述
在这里插入图片描述
验证一下

既然前端已经不让你60秒内再发,为什么还要后端验证, 因为调试时, postman只走后端,所以需要后端验证

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值