发送短信验证码二次封装
发送短信服务二次封装
在libs文件夹下创建包sms
然后再创建settings.py以及sms_main.py
settings.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`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台中申请
sms_main.py
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
init.py
from .sms_main import get_code, send_sms
使用
在views.py中
from libs import sms
# 发送短信接口
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='短信发送失败')