首先在容联云通信_短信平台注册用户登录,保存自己的这三条容联云信息:
安装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": "验证不一致"})
写好路由接口,接受前端发送的手机号即可发送短信验证码