ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

发送短信验证码二次封装

2022-04-24 22:35:07  阅读:207  来源: 互联网

标签:code 短信 settings py sms 验证码 封装 get


发送短信服务二次封装

在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中

# 发送短信接口
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='短信发送失败')

标签:code,短信,settings,py,sms,验证码,封装,get
来源: https://www.cnblogs.com/zonghan/p/16187952.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有