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 ...
随机推荐
- LeetCode1240铺瓷砖
题目 n*m的矩阵,只用正方形铺.求最少正方形个数. n,m<=13 思路 贪心: 加入是最大的正方形,显然行不通,比如n=11,m=13.那么贪心策略是1个11,其余是大小为2的正方形5个,大 ...
- P1599 货币
背景 又是一道水题 描述 在某个神秘的星球上有一种货币,它有一种奇怪的兑换规则 你有且仅有一枚面值为n的金币,你可以去银行进行兑换,也可以不兑换 如果去银行兑换,兑换的规则是这样的:用面值为a的金币去 ...
- springboot中word转pdf,加盖电子印章
概述 在开发过程中,word转pdf的方式有很多种有jar包的方式,有安装openoffice的方式,但是使用有的jar包有license认证,不然会生成水印,综合几种方法我采用了libreoffic ...
- CS5216 DP转HDMI 1080P方案|CS5216参数|CS5216中文规格书
Capstone CS5216是一款单端口/中继器,具有重新定时功能.它支持交流和直流耦合3.0-Gbps操作,可编程均衡和抖动清除.它包括DP电缆适配器寄存器,可用于识别电缆适配器的功能.这个抖动清 ...
- Java程序设计基础笔记 • 【第3章 运算符与表达式】
全部章节 >>>> 本章目录 3.1 运算符(一) 3.1.1 赋值运算符 3.1.2 算数运算符 3.1.3 复合运算符 3.1.4 实践练习(一) 3.1.5 实践练习 ...
- SpringCloud创建Config模块
1.说明 本文详细介绍Spring Cloud创建Config模块的方法, 基于已经创建好的Spring Cloud父工程, 请参考SpringCloud创建项目父工程, 创建Config模块这个子工 ...
- rsync配置文件讲解
1.安装rysnc 一般在安装系统时rsync是安装上(yum安装) 2. vim /etc/xinetd.d/rsync 在这个路径下有配置文件 service rsync { disabl ...
- vue3 父菜单渲染出来了,但是子菜单渲染不出来的原因
子菜单始终渲染不出来,控制台出现警告如下: 在查看框架源码时,发现在渲染时应用了递归.在这个博客找到答案,原因是升级的vue的版本没有升级@vue/compiler-sfc的版本,这两个版本应该保持一 ...
- centos7 安装jdk 脚本
下载安装包 链接:https://pan.baidu.com/s/10-U54WwoEaCC9Afj58owJA 提取码:jdk8 写如脚本 vi ***.sh #!/bin/bash #instal ...
- java调用redis的多种方式与心得
心得: /** * 心得: * 1.连接方式主要有:直连同步,直连事务,直连管道,直连管道事务,分布式直连同步,分布式直连管道, * 分布式连接池同步,分布式连接池管道:普通连接池同步,普通连接池管道 ...