阿里云短信服务的使用---获取短信验证码

1、百度搜索 阿里云
2、点击阿里云 进入官网
3、登录/注册
4、搜索 短信服务
在这里插入图片描述
5、点击进入短信免费使用 领取免费短信
6、点击进入短信 控制台
在这里插入图片描述
7、申请 签名 和 模板
在这里插入图片描述
8、打开帮助文档 点击所选文档
在这里插入图片描述
9、根据Python 版本 来安装 阿里云SDK,然后点击 OpenAPI Explorer
在这里插入图片描述
10、点击 SendSms
填写PhoneNumbers( 要发送短信的手机号),
SignName(审核通过的 签名),
TemplateCode(模板号),
TemplateParam(模板的数据)

填写完后 :发起调用
在这里插入图片描述

11、封装发短信代码utils/MyBaseView.py
在这里插入图片描述
在这里插入图片描述
12、在 settings.py 定义

ALY_ACCESSKEY_ID = "LTAI4Fci9EX1YfowAARw8ekc"
ALY_ACCESSKEY_SECRET = 'ipIhfM6aqcDMcSr9VUMqhUNpzjVCvo'

13、短信 验证测试(联网)

在这里插入图片描述
14、用Postman 测式 是否能发送短信验证码
在这里插入图片描述

15、 短信发送和验证的逻辑

from libs.captcha.captcha import captcha
from django.shortcuts import render
from django.http.response import HttpResponse
from django_redis import get_redis_connection
import random
from rest_framework.views import APIView
from rest_framework.response import Response
from userapp.models import *

# ---------------- 获取 手机验证码 -----------------------
class SendSMSCodeNew(APIView):
    def post(self, request):
        # 获取数据
        phone = request.data.get("phone")
        image_code = request.data.get("image_code")
        image_code_uuid = request.data.get("image_code_uuid")

        # 验证数据
        if not all([phone, image_code, image_code_uuid]):
            return Response({"code": 4005, "msg": "参数不全"})

        # 逻辑与入库
        # 3、验证图片验证码是否正确
        # 3.1 连接 redis
        redis_cli = get_redis_connection("img_code")
        # 3.2 拿着uuid 获取图片验证码
        redis_image_code = redis_cli.get(image_code_uuid).decode("utf-8")
        # 3.3比对redis里的code 和发来的code 是否一致
        if image_code.lower() != redis_image_code.lower():
            return Response({"code": 4009, "msg": "图片验证码错误"})

        # 使用阿里云发送短信
        # 4.1 准备手机验证码
        number = random.randint(100000, 999999)
        data = {"code": number}
        # 4.2使用封装好的接口发送短信
        aly_send_code(phone, data)

        # 5 将短信验证码绑定并存入redis
        redis_cli.setex(phone, 60 * 60, number)

        # 6.删除image_code
        redis_cli.delete(image_code_uuid)
        # 返回
        return Response({"code": 0, "msg": "发送成功"})

版权声明:本文为wen_mei原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。