1.路由配置

在这里插入图片描述

2.对接第三方短信接口

详细内容请点击

3.视图函数

def sms_view(request):"""短信验证视图逻辑1.获取请求体的数据[phone]2.调用封装的短信发送接口,实现发送短信"""data = json.loads(request.body)phone = data.get("phone")# 四位随机数code = random.randint(1000, 9999)# 判断:如果10分钟之内发过了,则直接返回,否则再发短信key = f"sms_{phone}"redis_code = caches["sms"].get(key)if redis_code:# 10分钟之内已经发送过了,直接返回,不能再发return JsonResponse({"code": 10107, "error": "10分钟之内发一次"})# 调用短信接口,发送短信sms_api = YunTongXunAPI(**settings.SMS_CONFIG)sms_api.run(phone, code)# 存入redis控制短信发送频率,有效期10分钟caches["sms"].set(key, code, 600)# 存入redis控制验证码有效期,有效期10分钟expire_key = f"sms_expire_{phone}"caches["sms"].set(expire_key, code, 600)return JsonResponse({"code": 200, "data": "短信发送成功"})

4.修改user/views.py代码

新增短信验证代码:

def users(request):"""注册功能逻辑视图1.获取请求体数据[request.body-字节串格式]2.数据校验[不做]3.检查用户名是否存在3.1 已存在:直接返回错误代码3.2 不存在:处理密码,存入数据表4.生成token5.返回正确响应[看接口文档]"""# 获取请求体数据data = json.loads(request.body)uname = data.get('uname')password = data.get('password')phone = data.get('phone')email = data.get('email')# 获取短信验证码verify = data.get("verify")expire_key = f"sms_expire_{phone}"redis_code = caches["sms"].get(expire_key)# 超过10分钟if not redis_code:return JsonResponse({"code": 10108, "error": {"message": "已过期,请重新获取验证码"}})# 10分钟之内,验证码输入错误if verify != str(redis_code):return JsonResponse({"code": 10109, "error": {"message": "验证码输入有误,请重新输入验证码"}})# 数据库查询old_users = UserProfile.objects.filter(username=uname)# 用户已存在if old_users:return JsonResponse({'code': 10100, 'error': 'The username is existed'})# 存入数据库try:user = UserProfile.objects.create(username=uname,password=hashlib.md5(password.encode()).hexdigest(),      # 密码进行加密phone=phone,email=email)except Exception as e:print(e)return JsonResponse({'code': 10101, 'error': '--The username is existed'})# 签发tokentoken = make_token(uname)# 二次开发 try一下# 发送激活邮件# 激活链接:http://XXX/active.html?code=xxx# code: base64(b"1016_zhaoliying")try:code_num = "%d" % random.randint(1000, 9999)        # 生成随机数code = "%s_%s" % (code_num, uname)code = base64.urlsafe_b64encode(code.encode()).decode()# 存储随机数key = "active_email_%s" % unamecaches["default"].set(key, code_num, 3 * 3600 * 24)# 激活链接verify_url = 'http://127.0.0.1:7070/dadashop/templates/active.html?code=' + code# 异步发送激活邮件async_send_active_mail.delay(email, verify_url)except Exception as e:print("send email error:", e)# 组织数据返回result = {'code': 200,'username': uname,'data': {'token': token},'carts_count': 0}return JsonResponse(result)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/92504.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/92504.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/92504.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java技术栈/面试题合集(11)-设计模式篇

场景 Java入门、进阶、强化、扩展、知识体系完善等知识点学习、性能优化、源码分析专栏分享: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/140870227 通过对面试题进行系统的复习可以对Java体系的知识点进行查漏补缺。 注: 博客: 霸道流氓气质-CSDN博…

Linux系统:Ext系列文件系统(软件篇)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录[TOC](文章目录)一,ext2文件系统1-1 宏观认识1-2 Block Group1-3 块组内部构成1-3-1 超级块(Super Block)1-3-2 块组描述符表GDT(Group Descriptor Table…

14. isaacsim4.2教程-April Tags/给相机加噪声

1. 前言April Tags 是一种视觉标签(类似 QR 码),用于通过相机进行定位和识别。它们通常用于计算机视觉任务中,帮助机器人识别和定位自己在物理空间中的位置,或者识别和追踪特定对象。前提条件启用 ROS 桥接&#xff1a…

Kafka + 时间轮 + 数据库实现延迟队列方案

Kafka 原生不支持延迟队列功能。而RabbitMQ、RocketMQ及Redis等其他消息队列原生支持延迟队列。 RabbitMQ RocketMQ Redis 实现方式 通过插件实现,消息进入延迟队列后根据配置时间过滤转发。 原生支持,发送消息时设置延迟级别,定时任务处…

力扣 hot100 Day69

287. 寻找重复数 给定一个包含 n 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。 你设计的解决方案必须 不修改…

Android 的CameraX的使用(配置,预览,拍照,图像分析,录视频)

Android Studio 版本号:2024.1.2 CameraX是Jetpack系列中的一个库,它基于Camera2 API构建,但提供了更高层次的抽象。 CameraX 三大核心用例: Preview预览 ,ImageCapture拍照和 VideoCapture录视频 一、创建项目,进行环境配置 CameraX 需要一些属于 Java 8 的方法,因此…

【机器学习深度学习】微调训练数据质量

目录 前言 一、为什么数据质量评估很重要 二、数据质量评估的核心维度 三、数据质量的可量化维度(必须要测的指标) 四、多答案、多类型数据的取舍与优化 场景 A:一个问题有多个相似回答 场景 B:多个类型数据,每…

从DeepSeek-V3到Kimi K2,大型语言模型架构对比

文章目录 摘要 **稀疏化与专家系统** **注意力机制优化** **归一化与稳定性设计** 模型架构对比详析 DeepSeek-V3 vs Llama 4 Maverick Qwen3 vs SmolLM3 Kimi 2的突破 1 DeepSeek V3/R1 1.1 多头潜在注意力(MLA) 1.2 混合专家系统(MoE) 1.3 DeepSeek 总结 2 OLMo 2 2.1 归…

Unity笔记(二)——Time、Vector3、位置位移、角度、旋转、缩放、看向

写在前面写本系列的目的(自用)是回顾已经学过的知识、记录新学习的知识或是记录心得理解,方便自己以后快速复习,减少遗忘。这里只有部分语法知识。五、Time时间相关1、时间缩放比例概念:可以通过UnityEngine.Time类的timeScale属性控制游戏时…

vue+vite项目中怎么定义一个环境变量可以在开发环境和生产环境使用不同的值,并且可以在vue页面和index.html通用。

首先我们需要下载一个插件vite-plugin-html然后再项目最外层和index.html同级目录下新建.env.development和.env.production两个项目并且定义你想要的环境变量名:注意要以VITE_开头VITE_APP_MAP_TOKEN1233444然后vite.config.js文件import { defineConfig,loadEnv } from vite…

Python-深度学习--2信息熵,条件熵(ID3决策树),KL散度

一、信息熵(Entropy)的计算与应用信息熵用于衡量一个概率分布的不确定性,值越大表示分布越分散(不确定性越高)。1. 数学定义对于离散概率分布 P,信息熵公式为:(通常以 2 为底单位是比…

国产化Word处理控件Spire.Doc教程:Python提取Word文档中的文本、图片、表格等

在现代办公场景中,Word文档已成为信息存储与交流的重要载体,承载着关键的业务数据、结构化表格、可视化图表以及协作批注等重要内容。面对日益增长的文档处理需求,传统的人工操作方式已难以满足效率与准确性的双重标准。采用Python实现Word文…

Spring IOC 原理

Spring IoC(控制反转)是Spring框架的核心机制,其原理是通过容器管理对象生命周期和依赖关系,实现解耦。 1. 控制反转(IoC)核心思想 传统模式:对象主动创建依赖(如new Service()&…

VSCode:基础使用 / 使用积累

官网 Visual Studio Code - Code Editing. Redefined 记录一、更新依赖 尝试删除yarn.lock文件 记录二、“解决冲突”的方式变了 更新后,“解决冲突”的方式变了,有的时候能选中两者,有的时候不能 现在又更新了,回复到了原来…

tcp 确认应答和超时时间

1. 确认应答之间的时间(RTT)这是指 从发送方发送数据到接收方返回确认(ACK)之间的时间。它反映的是数据传输的 往返延迟。例如,发送方发送一个数据包,接收方收到后,回传一个确认包(A…

图的应用-最短路径

最短路径的典型用途:交通网络的问题——从甲地到乙地之间是否有公路连通?在有多条通路的情况下,哪一条路最短?交通网络用有向网来表示:顶点——表示地点,弧——表示两个地点有路连通,弧上的权值…

【qt5_study】1.Hello world

模板 作为初学者我们选择第一个Application(Qt)和 Qt Widgets Application,所谓的模板就是 Qt为了方便开发程序,在新建工程时可以让用户基于一种模板来编写程序,包括 cpp文件, ui文件都已经快速的创建,而不用用户手动创建这些文件。 基类 这里默认选择的基类为 QMainWin…

项目构想|文生图小程序

Date: August 4, 2025项目介绍 👋,我们通过 Vibe Coding 做一个文字生成图片的小程序。 我们会从需求分析、技术选型、UI设计、项目构筑到最后打包,一路尝试 Vibe Coding 实现。 创建项目 创建文件夹:ai-pic-mini-app 采用 Git 进…

TiDB/MongoDB/Taosdb存储引擎概览

数据库类型存储引擎数据结构源码位置tidbRockDBLSM树https://github.com/facebook/rocksdbmongodbWiredTigerB 树/LSM树https://github.com/wiredtiger/wiredtigerTDengineTSDBBRINhttps://github.com/taosdata/TDengine 1、tidb存储引擎概览 LSM树数据结构描述LSM树(Log Str…

qt窗口--01

文章目录qt窗口--01窗口概览菜单栏工具栏状态栏浮动窗口子窗口对话框model结语很高兴和大家见面,给生活加点impetus!!开启今天的编程之路!! 作者:٩( ‘ω’ )و260 我的专栏:qt,Li…