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 文件中修改

  1. if __name__ == '__main__':
  2. __business_id = uuid.uuid1()
  3. # print(__business_id)
  4. # ,\"product\":\"云通信\"}"
  5. # 修改params参数,留着code验证码就行
  6. params = "{\"code\":\"314655\"}"
  7. # params = u'{"name":"wqb","code":"12345678","address":"bz","phone":"13000000000"}'
  8. # id:固定的,接收验证码的手机号,签名名称,模板名称,验证码
  9. 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文件,将内容复制到这个文件中)

     对文件进行优化:

  1. # -*- coding: utf-8 -*-
  2. import json
  3. import sys
  4. from aliyunsdkdysmsapi.request.v20170525 import SendSmsRequest
  5. from aliyunsdkdysmsapi.request.v20170525 import QuerySendDetailsRequest
  6. from aliyunsdkcore.client import AcsClient
  7. import uuid
  8. from aliyunsdkcore.profile import region_provider
  9. from aliyunsdkcore.http import method_type as MT
  10. from aliyunsdkcore.http import format_type as FT
  11. """
  12. 短信业务调用接口示例,版本号:v20170525
  13. Created on 2017-06-12
  14. """
  15. ACCESS_KEY_ID = "自己的<ACCESS_KEY_ID>"
  16. ACCESS_KEY_SECRET = "自己的<ACCESS_KEY_SECRET>"
  17. # 注意:不要更改
  18. REGION = "cn-hangzhou"
  19. PRODUCT_NAME = "Dysmsapi"
  20. DOMAIN = "dysmsapi.aliyuncs.com"
  21. acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)
  22. region_provider.add_endpoint(PRODUCT_NAME, REGION, DOMAIN)
    # def send_sms(business_id, phone_numbers, sign_name, template_code, template_param=None):
  23. def send_sms(phone_numbers, code):
  24. """
  25. 发送短信接口,在需要使用的地方引用该模块,然后调用该接口即可
  26. :param phone_numbers:发送的手机号码
  27. :param sign_name: 应用名
  28. :param template_code: 模板名称
  29. :param template_param: 模板变量参数
  30. :return:
  31. """
  32. # 将部分参数固定,在调用方法的时候更简洁,因为这些参数一般不会改变
  33. sign_name = '<xxxx>' # 应用名称
  34. template_code = '<xxxxx>' # 模板名称
  35. template_param = json.dumps({'code':code}) # 模板变量参数

  36. business_id = uuid.uuid1()
  37. smsRequest = SendSmsRequest.SendSmsRequest()
  38. # 申请的短信模板编码,必填
  39. smsRequest.set_TemplateCode(template_code)
  40.  
  41. # 短信模板变量参数
  42. if template_param is not None:
  43. smsRequest.set_TemplateParam(template_param)
  44. # 设置业务请求流水号,必填。
  45. smsRequest.set_OutId(business_id)
  46. # 短信签名
  47. smsRequest.set_SignName(sign_name)
  48. # 数据提交方式
  49. # smsRequest.set_method(MT.POST)
  50. # 数据提交格式
  51. # smsRequest.set_accept_format(FT.JSON)
  52. # 短信发送的号码列表,必填。
  53. smsRequest.set_PhoneNumbers(phone_numbers)
  54. # 调用短信发送接口,返回json
  55. smsResponse = acs_client.do_action_with_exception(smsRequest)
  56. # TODO 业务处理
  57. return smsResponse
  58. ## 这是测试用的代码
  59. # if __name__ == '__main__':
  60. # __business_id = uuid.uuid1()
  61. # # print(__business_id)
  62. # # ,\"product\":\"云通信\"}"
  63. # params = "{\"code\":\"314655\"}"
  64. # # params = u'{"name":"wqb","code":"12345678","address":"bz","phone":"13000000000"}'
  65. # print(send_sms(__business_id, "13203160137", "李靖轩", "SMS_141905211", params))

    3> 使用:

  1. from xx.xx import xx # 导入发信模块
  2.  
  3. # 发送验证码 view.py中的一个请求函数
  4. def sms_captcha(request):
  5. # GET方式获取手机号码,例如:/sms_captcha/?telephone=xxx
  6. telephone = request.GET.get('telephone')
  7. code = '123456' # 设置验证码
  8. # 发送短信验证码,返回发信结果:result
  9. result = aliyunsms.send_sms(telephone,code)
  10. # 将短信验证码存入缓存中
  11. cache.set(telephone, code, 5 * 60)
  12. return HttpResponse("OK")

  

遇到的问题:

  

  解决:环境安装问题,如果在虚拟环境中安装SDK成功了,那么在非虚拟环境中在安装一次

最后欢迎大家访问:http://www.devloper.top/  ,有免费的视频教程 与 博客文章

django之集成阿里云通信(发送手机短信验证码)的更多相关文章

  1. 四:java调接口实现发送手机短信验证码功能

    1.点击获取验证码之前的样式: 2.输入正确的手机号后点击获取验证码之后的样式: 3.如果手机号已经被注册的样式: 4.如果一个手机号一天发送超过3次就提示不能发送: 二:前台的注册页面的代码:reg ...

  2. Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用

    近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口,下面我把我在项目中用到的记录一下,以便给大家提供个思路,由于本人的文采有限, ...

  3. java后台通过Servlet给用户发送手机短信验证码,第一次写勿喷,欢迎转载

    短信验证码跟自己在Servlet画的验证码不一样,我们不用管短信验证码是怎么产生的,我们只需要关注如何调用短信验证码,在短信验证码里面添加 自己需要的随机数或者其他的内容. 现在直接上流程 第一步找一 ...

  4. SNF开发平台WinForm之十二-发送手机短信功能调用-金笛-SNF快速开发平台3.3-Spring.Net.Framework

    1.调用前组装参数 2.调用发送信息服务脚本   .调用前组装参数: BaseSendTaskEntity entity = new BaseSendTaskEntity(); entity.Mess ...

  5. 利用java实现的一个发送手机短信的小例子

    今天闲来无事,在微博上看到一个关于用java实现的一个发送手机短信的程序,看了看,写的不太相信,闲的没事,把他整理下来,以后可能用得着 JAVA发送手机短信,流传有几种方法:(1)使用webservi ...

  6. C#简单实现发送手机短信

    偶然想起,像编写一个从电脑向手机发送短信的程序,从网上查找到有三种方式:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册;(2) ...

  7. JAVA发送手机短信

    <p><span>JAVA发送手机短信,流传有几种方法:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册 ...

  8. 装饰者模式的学习(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 ...

  9. thinkphp结合云之讯做短信验证码

    thinkphp结合云之讯做短信验证码先去云之讯注册账号 网址http://www.ucpaas.com/ 注册云之讯平台账号,即可免费获得10元测试费用测试够用啦 解压附件到 ThinkPHP\Li ...

随机推荐

  1. 【LeetCode】470. Implement Rand10() Using Rand7() 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  2. golang 数组的一些自问自答

    所有代码基于Go-1.17.一些研究Go数组的自问自答,可以考虑作为面试题. 问题:静态存储区是什么?和堆/栈有什么区别? 回答: 可以参考下列图 堆上存放new产生的大块内存 栈上存放的是程序运行的 ...

  3. centos 与虚拟机

    一 创建虚拟机 1. 下载 centos7 和 vmware .centos的下载地址:见上一篇. 2.安装vmware ,具体安装过程,自行百度(一路点击确定) 3.打开vmware ,点击创建新的 ...

  4. 洛谷 P1439 【模板】最长公共子序列(DP,LIS?)

    题目描述 给出1-n的两个排列P1和P2,求它们的最长公共子序列. 输入输出格式 输入格式: 第一行是一个数n, 接下来两行,每行为n个数,为自然数1-n的一个排列. 输出格式: 一个数,即最长公共子 ...

  5. 论文翻译:2019_Deep Neural Network Based Regression Approach for A coustic Echo Cancellation

    论文地址:https://dl.acm.org/doi/abs/10.1145/3330393.3330399 基于深度神经网络的回声消除回归方法 摘要 声学回声消除器(AEC)的目的是消除近端传声器 ...

  6. CS5210|低成本HDMI转VGA方案|CS5210参数说明

    Capstone最新推出的一款HDMI转VGA音视频转接线或者转换器方案芯片CS5210. 其设计的优势在于内置晶振,外围电路器件较少设计简单,芯片封装集成度较高,方案BOM成本低,相比其他方案产品更 ...

  7. shell3-循环

    常用的循环语句有3种: <1>for <2>while <3>utile 1.for语句的格式: for 变量名 in 列表: do 循环体 done 如何生成列表 ...

  8. CSS基础 清除浮动

    1.单伪元素清除法:清除浮动 .clearfix::after{             content: '.';             display: block;             c ...

  9. 去掉所有包含this或is的行

    题目描述 写一个 bash脚本以实现一个需求,去掉输入中含有this的语句,把不含this的语句输出 示例: 假设输入如下: that is your bag is this your bag? to ...

  10. Nagios 请检查HTTP服务器关于该CGI的访问权限设置

    无权查看任何主机的信息. 请检查HTTP服务器关于该CGI的访问权限设置. 搜索了一下方法 确保 htpasswd.user的所有组为nagios 解决办法: vi /usr/local/nagios ...