短信验证(阿里云)

短信验证(阿里云)

  1. 下载
  • 下载官方的demohttps://help.aliyun.com/document_detail/55359.html?spm=a2c4g.11186623.4.3.SK7RE

2.安装配置

到demo目录中做一下安装

pyenv activate env3.6.6  # 打开虚拟开发环境
python setup.py install  # 需要选择python的版本
  • 配置发送的const.py

    ACCESS_KEY_ID = “LTAIDHOYSjYcvyVt” #
    ACCESS_KEY_SECRET = “qrEgykmXX4e6GUMFOqzuiLZ5gsUxSC”

3.代码实现

class SMS:
    def __init__(self,sign_name,template_code):
        self.__business_id = uuid.uuid1()
        self.sign_name = sign_name  #签名
        self.template_code = template_code  #模板代码

    #发送短信
    def send_sms(self, phone_numbers,  template_param):
        template_param = "{\"number\":\"" + str(template_param) + "\"}"
        smsRequest = SendSmsRequest.SendSmsRequest()
        # 申请的短信模板编码,必填
        smsRequest.set_TemplateCode(self.template_code)

        # 短信模板变量参数
        if template_param is not None:
            smsRequest.set_TemplateParam(template_param)

        # 设置业务请求流水号,必填。
        smsRequest.set_OutId(self.__business_id)

        # 短信签名
        smsRequest.set_SignName(self.sign_name)

        # 数据提交方式
        # smsRequest.set_method(MT.POST)

        # 数据提交格式
        # smsRequest.set_accept_format(FT.JSON)

        # 短信发送的号码列表,必填。
        smsRequest.set_PhoneNumbers(phone_numbers)

        # 调用短信发送接口,返回json
        smsResponse = acs_client.do_action_with_exception(smsRequest)

        # TODO 业务处理
        return smsResponse

4.前端代码

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
    <script src="{% static 'jquery-1.11.3/jquery.min.js' %}"></script>
</head>
<body>
<form action="/vc/dologin/" method="post">
    用户名: <input type="text" name="username" placeholder="请输入用户名"> <br>
    手机号: <input type="text" name="phone" id="phone"> <br>
    验证码:<input type="text" name="yzm"> <input type="button" value="获取验证码" id="yzm">  <br>
    <input type="submit" value="登录">
</form>
</body>
</html>
<script>
    var time = 10
    var timer
    $('#yzm').click(function () {
        var _this = this;//设置局部变量表示当前按钮
        // 按钮不可用
        this.disabled = true //当前按钮不可用
        timer = setInterval(function(){
            time--
            _this.value = '' + time + "后重新发送"
            if (time < 1){
                clearInterval(timer)
                timer = null
                _this.value = "获取验证码"
                _this.disabled = false
                time = 10
            }
        },1000);
        phone = $('#phone').val()
        // 发送手机号给视图函数
        $.get('{% url "vc:sms" %}',{'phone':phone},'json')
    })

</script>

5.视图函数

def send(request):
    sms = SMS('浮东源', 'SMS_102315005')
    phone = request.GET.get('phone')
    num = randint(1000, 9999)  # 验证码
    sms.send_sms(phone, num)
    return HttpResponse("code")

猜你喜欢

转载自blog.csdn.net/qq_33722246/article/details/85055272