发送短信
import json
from string import printable
from django.views.generic import View
from random import choice
from utils.dysms_python.demo_sms_send import send_sms
def sms_captcha(request):
"""04短信验证码"""
telephone = request.GET.get('telephone')
code = ''.join([choice(printable[:62]) for i in range(4)])
cache.set('sms_captcha',code,timeout=120)
result = send_sms(telephone,code).decode('utf-8')
res = json.loads(result)
return HttpResponse(res["Message"])
1-1 utils/dysms_python/demo_sms_send.py
import json
import sys
from importlib import reload
from string import printable
from aliyunsdkdysmsapi.request.v20170525 import SendSmsRequest
from aliyunsdkdysmsapi.request.v20170525 import QuerySendDetailsRequest
from aliyunsdkcore.client import AcsClient
import uuid
from aliyunsdkcore.profile import region_provider
from aliyunsdkcore.http import method_type as MT
from aliyunsdkcore.http import format_type as FT
from random import choice
"""
短信业务调用接口示例,版本号:v20170525
Created on 2017-06-12
"""
if sys.version_info.major == 2:
try:
reload(sys)
sys.setdefaultencoding('utf8')
except NameError:
pass
except Exception as err:
raise err
REGION = "cn-hangzhou"
PRODUCT_NAME = "Dysmsapi"
DOMAIN = "dysmsapi.aliyuncs.com"
ACCESS_KEY_ID = "LTAIPJZY3plmWIks"
ACCESS_KEY_SECRET = "dGZGnJEIleNWmNHPQZqPkSaTWS9LVd"
acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)
region_provider.add_endpoint(PRODUCT_NAME, REGION, DOMAIN)
def send_sms(phone_numbers,code):
business_id = uuid.uuid1()
sign_name = "马浩浩"
template_code = 'SMS_138079053'
print('短信验证码:',code)
template_param = json.dumps({"code":code})
smsRequest = SendSmsRequest.SendSmsRequest()
smsRequest.set_TemplateCode(template_code)
if template_param is not None:
smsRequest.set_TemplateParam(template_param)
smsRequest.set_OutId(business_id)
smsRequest.set_SignName(sign_name)
smsRequest.set_PhoneNumbers(phone_numbers)
smsResponse = acs_client.do_action_with_exception(smsRequest)
return smsResponse
2 xfzauth/urls.py
from django.urls import path
from . import views
app_name = 'account'
urlpatterns = [
path('login/',views.LoginView.as_view(),name='login'),
path('register/',views.Register.as_view(),name='register'),
path('img_captcha/',views.img_captcha,name='img_captcha'),
path('sms_captcha/',views.sms_captcha,name='sms_captcha'),
]
3 前端js文件
$(function () {
var smsCaptcha = $('.sms-captcha-btn');
smsCaptcha.click(send_sms);
function send_sms() {
var telephone = $("input[name='telephone']").val();
console.log(telephone);
$.get({
'url': '/account/sms_captcha/',
'data': {'telephone': telephone},
'success': function (res) {
var count = 60;
smsCaptcha.addClass('disabled');
smsCaptcha.unbind('click');
var timer = setInterval(function () {
smsCaptcha.text(count);
count--;
if (count <= 0) {
smsCaptcha.bind("click", send_sms);
smsCaptcha.removeClass('disabled');
clearInterval(timer);
smsCaptcha.text('发送验证码');
}
}, 1000);
},
'fail': function (error) {
console.log(error);
}
});
}
})