在libs文件夹下创建包sms
然后再创建settings.py以及sms_main.py
# 短信应用 SDK AppID APPID = 1400669171 # SDK AppID 以1400开头 # 短信应用 SDK AppKey APPKEY = "35374dbccf88d2fab8af32885125af96" # 短信模板ID,需要在短信控制台中申请 TEMPLATE_ID = 1379089 # NOTE: 这里的模板 ID`7839` 只是示例,真实的模板 ID 需要在短信控制台中申请 # 签名 SMS_SIGN = "z姓程序猿公众号" # NOTE: 签名参数使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台中申请
from qcloudsms_py import SmsSingleSender from utils.log import logger import random from . import settings # 获取验证码(默认为4) def get_code(count=4): code = '' for i in range(count): temp = random.randint(0, 9) code += str(temp) return code # 发送短信 def send_sms(phone, code): ssender = SmsSingleSender(settings.APPID, settings.APPKEY) params = [code, '5'] # 当模板没有参数时,`params = []` try: result = ssender.send_with_param(86, phone, settings.TEMPLATE_ID, params, sign=settings.SMS_SIGN, extend="", ext="") if result.get('result') == 0: return True else: # 发送失败记录日志 因为这个日志配置的是Django框架的参数,其他可能不能用,可以用判断是False在外面记录日志的方法 logger.error('手机号为%s,发送短信失败' % phone) return False except Exception as e: logger.error('手机号为%s发送短信失败,原因为%s' % (phone, str(e))) return False
from .sms_main import get_code, send_sms
在views.py中
# 发送短信接口 class SendMsgAPIView(ViewSet): @action(methods=['get'], detail=False) def message(self, request): # get请求取出数据 mobile = request.query_params.get('mobile', None) if not mobile: raise APIException('手机号没传') # 获取验证码 code = sms.get_code() # 发送短信 res = sms.send_sms(mobile, code) if res: # 如果是其他框架根据返回值如果是False来记录日志 return APIResponse(msg='短信发送成功') else: return APIResponse(msg='短信发送失败')