容联云发送短信验证码

首先在容联云通信_短信平台注册用户登录,保存自己的这三条容联云信息:

 安装SDK

pip install ronglian_sms_sdk

新创建一个utils.py 文件,编写发送短信的函数


from ronglian_sms_sdk import SmsSDK
import json
accId = '8**********************'                            #刚刚保存容联云的信息
accToken = '**********************'
appId = '**********************'
#定义发送短信的函数  要发送的验证码  发送的手机号  过期时间5分钟
def send_message(sms_code,mobile,expire=5):

    sdk = SmsSDK(accId=accId,accToken=accToken,appId=appId)         #实例化sdk对象
    tid = '1'                                                        #准备数据
    datas = ('%s'%sms_code,'%s'%expire)
    res = sdk.sendMessage(tid=tid,mobile=mobile,datas=datas)         #发送短信
    data = json.loads(res)                                           #解析json字符串
    print('容联云响应的数据:',data)
    if data.get('statusCode') == '000000':
        return True
    return False

写发送短信和校验验证码的视图

from .utils import send_message
import random,redis

class SmsCodeAPIView(APIView):
    #发送短信验证码
    def get(self,request):
        mobile = request.query_params.get('mobile')         # 1.获取前端的手机号
        smsCode = random.randint(10000,99999)               # 2.生成随机码

        result = send_message(sms_code,mobile)               # 3.发送短信(同步)
        if result:
            redis_conn = redis.Redis(host='localhost')            #存储短信验证码到redis中
            key = 'sms_%s' % mobile
            redis_conn.set(key,sms_code,ex=300)
            return Response({'msg':'发送短信验证码成功','code':200})

        return Response({'msg': '发送短信验证码失败', 'code': 204})
    
    #验证短信验证码
    def post(self, request):

        mobile = request.data.get('mobile')                     # 1.获取前端手机号、验证码
        smsCode = request.data.get('smscode')
      
        redis_conn = redis.Redis(host='localhost')        # 2.连接redis 获取存储的验证码
        key = 'sms_%s' % mobile
        stored_code = redis_conn.get(key)                           # 获取redis中的验证码
        # print(stored_code)
        if not stored_code:
            return Response({"code": 400, "msg": "验证码已过期"})

        if stored_code.decode() == smsCode:                        # 3.对比验证码是否一致
            return Response({"code": 200, "msg": "验证成功"})
        else:
            return Response({"code": 400, "msg": "验证不一致"})

写好路由接口,接受前端发送的手机号即可发送短信验证码

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值