• 发送短信验证码


    借助于第三方短信服务——腾讯云

    腾讯云短信服务

    帮助文档
        -API:一堆web接口,基于API接口来写
        -SDK:软件开发工具包软件,别人基于api接口,用不同语言封装的工具包,我们可以直接调用方法完成某些事
    

    短信验证码接口

    # 生成一个四位随机验证码
    def get_code():
        import random
        s_code=''
        for i in range(4):
            s_code+=str(random.randint(0,9))
        return s_code
    
    
    def send_message(phone,code):
    
        ssender = SmsSingleSender(settings.appid, settings.appkey)
        params = [code, '3']  # 当模板没有参数时,`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:
                return False
        except Exception as e:
            log.error('手机号:%s,短信发送失败,错误为:%s'%(phone,str(e)))
    
    #settings.py
    # 腾讯云SDK文档
    # 短信的配置
    # 短信应用 SDK AppID
    appid = 140039846  # SDK AppID 以1400开头
    # 短信应用 SDK AppKey
    appkey = "fd972f6da15add4de47b50b8dbe930"
    # 短信模板ID,需要在短信控制台中申请
    template_id = 66935  # NOTE: 这里的模板 ID`7839`只是示例,真实的模板 ID 需要在短信控制台中申请
    # 签名
    sms_sign = "小猿取经"  # NOTE: 签名参数使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台中申请
    
    
    
    # views.py
        @action(methods=['GET'], detail=False)
        def send(self,request,*args,**kwargs):
            '''
            发送验证码接口
            :return:
            '''
            import re
            from luffyapi.libs.tx_sms import get_code,send_message
            from django.core.cache import cache
            from django.conf import settings
            telephone = request.query_params.get('telephone')
            if not re.match('^1[3-9][0-9]{9}', telephone):
                return APIResponse(code=0, msg='手机号不合法')
            code=get_code()
            result=send_message(telephone,code)
            # 验证码保存(保存到哪?)
            # sms_cache_%s
            cache.set(settings.PHONE_CACHE_KEY%telephone,code,180)
            if result:
                return APIResponse(code=1,msg='验证码发送成功')
            else:
                return APIResponse(code=0, msg='验证码发送失败')
    
  • 相关阅读:
    Android拍照、摄像方向旋转的问题 代码具体解释
    Java 实现桥接(Bridge)模式
    C++标准I/O库:iostream, fstream, sstringstream
    Android 使用 DownloadManager 管理系统下载任务的方法
    JavaScript提高:005:ASP.NET使用easyUI TABS标签显示问题
    使用c++的cocos2d-x-3.0rc1程序公布apk
    UVA 146 ID Codes(下一个排列)
    C/C++:C++伪函数
    开源项目AndroidUtil-採用Fragment实现TabHost
    系统编程是什么
  • 原文地址:https://www.cnblogs.com/pythonwl/p/13391134.html
Copyright © 2020-2023  润新知