前端页面
前端异步请求
输入手机号,点击‘免费获取验证码’,发送异步请求
//发送短信
function send_sms(){
var phone = $("#phone").val();
var csrftoken = $("input[name='csrfmiddlewaretoken']").val();
var data = {
"phone":phone,
"csrfmiddlewaretoken":csrftoken,//手动加入页面中的密钥,防止403
}
//console.log(data);
//异步请求,让服务端发送短信
$.ajax({
url:"/index/",
type:"post",
data:data, //服务端request.POST获取数据,
dataType:"json",
success:function(res){
if(res.code == 200){
alert(res.data);
}else{
alert(res.error);
}
},
error:function(res){
alert(res);
},
})
}
后端处理请求
def show_index(request):
if request.method == "GET":
return render(request,"index.html")
elif request.method == "POST":
# 查看前端提交的数据
data = request.POST #QueryDict
print("frontend data:",data)
#获取数据
phone = request.POST.get("phone")
csrftoken = request.POST.get("csrfmiddlewaretoken")#中间件已经验证通过,视图还可以继续验证
#发送短信
try:
send_sms = SendSms()
except:
pass
#返回响应
data = {"code":200,"data":"短信发送成功,请注意查收!"}
return JsonResponse(data)
请求第三方发送短信
使用方式
- 访问短信接入,点击‘立即接入’
- 注册用户
- 登录–管理控制台首页—查看自己的id等信息
默认提供一定数量的测试短信
- 点击 ‘开发文档’,选择 ‘短信开发手册’
学习绑定测试手机号及请求的方法
云通讯返回的验证码与用户输入的验证码一致,则验证通过
具体使用
通过程序:
1.构造完整的url
2.构造headers
3.构造请求体
通过requests发送请求
res = requests.post(url,headers=headers,data = json.dumps)
#账户信息
accountSid = "你的账户Sid"
accountToken = "你的账户口令"
appId = "你的appId"
templateId = "1"
import hashlib
import time
import random
from datetime import datetime
from base64 import b64encode
import json
import requests
class SendSms(object):
base_url = 'https://app.cloopen.com:8883'
def __init__(self):
pass
def get_sig_params(self):
"""生成加密数据"""
self.ts = datetime.now().strftime("%Y%m%d%H%M%S")
s = accountSid + accountToken + self.ts
m = hashlib.md5()
m.update(s.encode())
return m.hexdigest().upper()
def get_full_url(self):
"""获取完整的url"""
#generate sig
sig = self.get_sig_params()
#vary_url
vary_url = "/2013-12-26/Accounts/{}/SMS/TemplateSMS?sig={}".format(accountSid,sig)
self.url = self.base_url + vary_url
def get_headers(self):
"""构造请求头"""
s = accountSid + ":" + self.ts
auth_ = b64encode(s.encode())
self.headers = {
"Accept":"application/json",
"Content-Type":"application/json;charset=utf-8;",
"Authorization":auth_,
}
def get_data(self,phone,code,time_long):
"""
构造请求体
"""
self.data = {
"to":phone,
"appId":appId,
"templateId":templateId,
"datas":[code,time_long],
}
def send_sms(self,phone,code,time_long):
self.get_full_url()
self.get_headers()
self.get_data(phone,code,time_long)
res = requests.post(self.url,headers=self.headers,data=json.dumps(self.data))
if res.status_code == 200:
print("响应OK")
print()
else:
print("响应失败")
if __name__ == "__main__":
send_sms = SendSms()
send_sms.send_sms("你的测试手机号","验证码","5")
完整代码
链接:完整代码
提取码:57pd