短信验证(阿里云)
- 下载
- 下载官方的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的版本
-
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")