同步发送短信验证码

1.注册容联云

容联云地址:https://www.yuntongxun.com/
注册成功把账号信息复制保存下来

2.同步发送短信

2.1 安装SDK
pip install ronglian_sms_sdk
2.2 发送短信调用

在子应用下的utils.py

from ronglian_sms_sdk import SmsSDK
import json
accId = "8aaf07088185853e01818a75a87a016f"
accToken = "6b755e025dc2436a8e3b7b82ef9ac20c"
appId = "8aaf07088185853e01818a75a9a00176"

# 定义发送短信的函数
def send_message(sms_code,mobile,expire=5):
    """
    :param sms_code: 要发送的验证码
    :param mobile: 发送的手机号
    :param expire: 过期时间
    :return:
    """
    # 实例化sdk对象
    sdk = SmsSDK(accId = accId,accToken=accToken,appId=appId)

    # 准备数据
    tid="1"
    datas = ("%s"%sms_code,"%s"%expire) # 元组
    # 发送短信
    res = sdk.sendMessage(tid=tid,mobile=mobile,datas=datas)
    # 解析json字符串
    data = json.loads(res)
    print("容联云响应的数据:",data)
    if data.get('statusCode') == '000000':
        return True

    return False
2.3生成、验证短信验证码

在视图中

# 短信验证码视图
import redis
from .utils import send_message
from .tasks import send_message
class SmsCodeAPIView(APIView):
    # 发送短信验证码
    def get(self,request):
        # 1.获取前端手机号
        mobile = request.query_params.get("mobile")
        # 生成随机码
        sms_code = str(random.randint(10000,99999))
        result = send_message(sms_code,mobile)
        # 同步发送验证码
        result = send_message(sms_code,mobile)
          if result:
             # 存储短信验证码到redis当中
             r =redis.Redis(host='127.0.0.1',port=6379,password='123123')
             key = "sms_%s"%mobile
             r.set(key,sms_code,ex=300)
             return Response({"code":200,"msg":'发送短信验证码成功',"sms":sms_code})
         else:
             return Response({"code":400,"msg":'发送失败'})


    # 验证短信验证码
    def post(self,request):
        # 获取前端手机号、验证码
        mobile = request.data.get("mobile")
        sms_code = request.data.get("sms_code")

        # 获取存储的验证码
        r = redis.Redis(host='127.0.0.1',port=6379,password='123123')
        key = "sms_%s"%mobile
        stored_code = r.get(key).decode()

        if not stored_code:
            return Response({
                "code":400,
                "msg":'验证码过期'
            })

        if sms_code == str(stored_code):
            return Response({
                "code":200,
                "msg":'验证成功'
            })
        return Response({
            "code":400,
            "msg":'验证失败'
        })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值