django之集成阿里云通信(发送手机短信验证码)
python3 + django2.0 集成 “阿里云通信” 服务:
(SDK文档地址:https://help.aliyun.com/document_detail/55491.html?spm=5176.10629532.106.3.2fe01cbeAp0iFO)
步骤1:
在阿里云 “短信服务” 中创建一个签名
步骤2:
在阿里云 “短信服务” 中创建一个短信模板
步骤3:
下载阿里云 “短信服务” SDK
步骤4:
在虚拟工作环境中安装SDK:
1> 进入SDK根目录
2> 在虚拟环境中执行命令:python setup.py install(最好是在虚拟运行环境中和非运行环境中都安装一下,忘记了)
步骤5:
1> 在阿里云 “短信服务” 中得到:<ACCESS_KEY_ID> 与 <ACCESS_KEY_SECRET>
2> 在const.py 文件中修改:<ACCESS_KEY_ID> 与 <ACCESS_KEY_SECRET>
步骤6:
测试:
1> 在 demo_sms_send.py 文件中修改
if __name__ == '__main__':
__business_id = uuid.uuid1()
# print(__business_id)
# ,\"product\":\"云通信\"}"
# 修改params参数,留着code验证码就行
params = "{\"code\":\"314655\"}"
# params = u'{"name":"wqb","code":"12345678","address":"bz","phone":"13000000000"}'
# id:固定的,接收验证码的手机号,签名名称,模板名称,验证码
print(send_sms(__business_id, "<13203160317>", "<李靖轩>", "<SMS_141905211>", params))
2> 运行SDK中的Dome:python demo_sms_send.py,运行成功就会收到短信
步骤7:
使用SDK:
1> 将阿里云SDK中的 “aliyunsdkdysmsapi” 文件夹复制到 django 项目中
2> 将阿里云SDK中的 “demo_sms_send.py” 文件复制到 django 项目中(或者创建一个aliyunsm.py文件,将内容复制到这个文件中)
对文件进行优化:
# -*- coding: utf-8 -*-
import json
import sys
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
"""
短信业务调用接口示例,版本号:v20170525
Created on 2017-06-12
"""
ACCESS_KEY_ID = "自己的<ACCESS_KEY_ID>"
ACCESS_KEY_SECRET = "自己的<ACCESS_KEY_SECRET>"
# 注意:不要更改
REGION = "cn-hangzhou"
PRODUCT_NAME = "Dysmsapi"
DOMAIN = "dysmsapi.aliyuncs.com"
acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)
region_provider.add_endpoint(PRODUCT_NAME, REGION, DOMAIN)
# def send_sms(business_id, phone_numbers, sign_name, template_code, template_param=None):
def send_sms(phone_numbers, code):
"""
发送短信接口,在需要使用的地方引用该模块,然后调用该接口即可
:param phone_numbers:发送的手机号码
:param sign_name: 应用名
:param template_code: 模板名称
:param template_param: 模板变量参数
:return:
"""
# 将部分参数固定,在调用方法的时候更简洁,因为这些参数一般不会改变
sign_name = '<xxxx>' # 应用名称
template_code = '<xxxxx>' # 模板名称
template_param = json.dumps({'code':code}) # 模板变量参数
business_id = uuid.uuid1()
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_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
## 这是测试用的代码
# if __name__ == '__main__':
# __business_id = uuid.uuid1()
# # print(__business_id)
# # ,\"product\":\"云通信\"}"
# params = "{\"code\":\"314655\"}"
# # params = u'{"name":"wqb","code":"12345678","address":"bz","phone":"13000000000"}'
# print(send_sms(__business_id, "13203160137", "李靖轩", "SMS_141905211", params))
3> 使用:
from xx.xx import xx # 导入发信模块 # 发送验证码 view.py中的一个请求函数
def sms_captcha(request):
# GET方式获取手机号码,例如:/sms_captcha/?telephone=xxx
telephone = request.GET.get('telephone')
code = '123456' # 设置验证码
# 发送短信验证码,返回发信结果:result
result = aliyunsms.send_sms(telephone,code)
# 将短信验证码存入缓存中
cache.set(telephone, code, 5 * 60)
return HttpResponse("OK")
遇到的问题:
解决:环境安装问题,如果在虚拟环境中安装SDK成功了,那么在非虚拟环境中在安装一次
最后欢迎大家访问:http://www.devloper.top/ ,有免费的视频教程 与 博客文章
django之集成阿里云通信(发送手机短信验证码)的更多相关文章
- 四:java调接口实现发送手机短信验证码功能
1.点击获取验证码之前的样式: 2.输入正确的手机号后点击获取验证码之后的样式: 3.如果手机号已经被注册的样式: 4.如果一个手机号一天发送超过3次就提示不能发送: 二:前台的注册页面的代码:reg ...
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口,下面我把我在项目中用到的记录一下,以便给大家提供个思路,由于本人的文采有限, ...
- java后台通过Servlet给用户发送手机短信验证码,第一次写勿喷,欢迎转载
短信验证码跟自己在Servlet画的验证码不一样,我们不用管短信验证码是怎么产生的,我们只需要关注如何调用短信验证码,在短信验证码里面添加 自己需要的随机数或者其他的内容. 现在直接上流程 第一步找一 ...
- SNF开发平台WinForm之十二-发送手机短信功能调用-金笛-SNF快速开发平台3.3-Spring.Net.Framework
1.调用前组装参数 2.调用发送信息服务脚本 .调用前组装参数: BaseSendTaskEntity entity = new BaseSendTaskEntity(); entity.Mess ...
- 利用java实现的一个发送手机短信的小例子
今天闲来无事,在微博上看到一个关于用java实现的一个发送手机短信的程序,看了看,写的不太相信,闲的没事,把他整理下来,以后可能用得着 JAVA发送手机短信,流传有几种方法:(1)使用webservi ...
- C#简单实现发送手机短信
偶然想起,像编写一个从电脑向手机发送短信的程序,从网上查找到有三种方式:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册;(2) ...
- JAVA发送手机短信
<p><span>JAVA发送手机短信,流传有几种方法:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册 ...
- 装饰者模式的学习(c#) EF SaveChanges() 报错(转载) C# 四舍五入 保留两位小数(转载) DataGridView样式生成器使用说明 MSSQL如何将查询结果拼接成字符串 快递查询 C# 通过smtp直接发送邮件 C# 带参访问接口,WebClient方式 C# 发送手机短信 文件 日志 写入 与读取
装饰者模式的学习(c#) 案例转自https://www.cnblogs.com/stonefeng/p/5679638.html //主体基类 using System;using System.C ...
- thinkphp结合云之讯做短信验证码
thinkphp结合云之讯做短信验证码先去云之讯注册账号 网址http://www.ucpaas.com/ 注册云之讯平台账号,即可免费获得10元测试费用测试够用啦 解压附件到 ThinkPHP\Li ...
随机推荐
- 1091. Tmutarakan Exams
1091. Tmutarakan Exams Time limit: 1.0 secondMemory limit: 64 MB University of New Tmutarakan trains ...
- 记一次引入Elasticsearch的系统架构实战
前言 我曾经面试安踏的技术岗,当时面试官问了我一个问题:如果你想使用某个新技术但是领导不愿意,你怎么办? 对于该问题我相信大家就算没有面试被问到过,现实工作中同事之间的合作也会遇到. 因此从我的角度重 ...
- RabbitMQ 七种队列模式
(1)简单模式(Hello World) 做最简单的事情,一个生产者对应一个消费者,RabbitMQ相当于一个消息代理,负责将A的消息转发给B 应用场景: 将发送的电子邮件放到消息队列,然后邮件服务在 ...
- Not All Samples Are Created Equal: Deep Learning with Importance Sampling
目录 概 主要内容 "代码" Katharopoulos A, Fleuret F. Not All Samples Are Created Equal: Deep Learnin ...
- JS运行三部曲(预编译)
JS运行的三个步骤: 语法分析 预编译 解释执行 语法分析:通俗来说就是通篇检查你的代码有没有语法错误,有语法错误的话,程序是不会执行的 解释执行:也就是程序读一句执行一句 最重点的也就是预编译了,那 ...
- 使用JavaScript数组实现省份和城市的级联菜单
查看本章节 查看作业目录 需求说明: 使用数组实现省份和城市的级联菜单.具体要求如下 在页面中添加城市时,根据选择的省份,动态地添加该省份的城市 页面加载完毕后,第一个列表框填充"两湖两广& ...
- C#中的显式转换
大多数编程语言都支持显示转换,也称为强制转换,它与隐式转换相呼应,比如,一般的,整型可以通过隐式转换成浮点型,而浮点型需要通过强制转换成整型: int i = 32; double d = i;//整 ...
- 使用docker或者docker-compose部署Zookeeper集群
之前有介绍过Zookeeper的安装部署(Zookeeper基础教程(二):Zookeeper安装),但是那里我是基于独立的虚拟机来实现部署的,这种部署方式适合线上集群部署.后来有几次想用一下Zook ...
- python+appium运行提示找不到adb.exe “An unknown server-side error occurred while processing the command. Original error: Could not find 'adb.exe' in ["D:\\adt\\sdk;\\platform-tools\\adb.exe"”
自己踩过的坑,不记下来就会忘掉,忘了就会不断的重复踩坑!! 重来在一台电脑上搭建了python的环境,在运行的时候,提示找不到adb.exe,看到这个问题我在想是不是我的环境变量配置有问题,我就去改了 ...
- Flask_环境部署(十六)
flask自带的服务器,无法满足性能要求,我们这里采用Gunicorn做wsgi容器,来部署flask程序并使用 Nginx 做前端代理实现分流.转发.负载均衡,以及分担服务器的压力. Gunicor ...