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. LeetCode1240铺瓷砖

    题目 n*m的矩阵,只用正方形铺.求最少正方形个数. n,m<=13 思路 贪心: 加入是最大的正方形,显然行不通,比如n=11,m=13.那么贪心策略是1个11,其余是大小为2的正方形5个,大 ...

  2. P1599 货币

    背景 又是一道水题 描述 在某个神秘的星球上有一种货币,它有一种奇怪的兑换规则 你有且仅有一枚面值为n的金币,你可以去银行进行兑换,也可以不兑换 如果去银行兑换,兑换的规则是这样的:用面值为a的金币去 ...

  3. springboot中word转pdf,加盖电子印章

    概述 在开发过程中,word转pdf的方式有很多种有jar包的方式,有安装openoffice的方式,但是使用有的jar包有license认证,不然会生成水印,综合几种方法我采用了libreoffic ...

  4. CS5216 DP转HDMI 1080P方案|CS5216参数|CS5216中文规格书

    Capstone CS5216是一款单端口/中继器,具有重新定时功能.它支持交流和直流耦合3.0-Gbps操作,可编程均衡和抖动清除.它包括DP电缆适配器寄存器,可用于识别电缆适配器的功能.这个抖动清 ...

  5. Java程序设计基础笔记 • 【第3章 运算符与表达式】

    全部章节   >>>> 本章目录 3.1 运算符(一) 3.1.1 赋值运算符 3.1.2 算数运算符 3.1.3 复合运算符 3.1.4 实践练习(一) 3.1.5 实践练习 ...

  6. SpringCloud创建Config模块

    1.说明 本文详细介绍Spring Cloud创建Config模块的方法, 基于已经创建好的Spring Cloud父工程, 请参考SpringCloud创建项目父工程, 创建Config模块这个子工 ...

  7. rsync配置文件讲解

    1.安装rysnc 一般在安装系统时rsync是安装上(yum安装) 2.     vim /etc/xinetd.d/rsync 在这个路径下有配置文件 service rsync { disabl ...

  8. vue3 父菜单渲染出来了,但是子菜单渲染不出来的原因

    子菜单始终渲染不出来,控制台出现警告如下: 在查看框架源码时,发现在渲染时应用了递归.在这个博客找到答案,原因是升级的vue的版本没有升级@vue/compiler-sfc的版本,这两个版本应该保持一 ...

  9. centos7 安装jdk 脚本

    下载安装包 链接:https://pan.baidu.com/s/10-U54WwoEaCC9Afj58owJA 提取码:jdk8 写如脚本 vi ***.sh #!/bin/bash #instal ...

  10. java调用redis的多种方式与心得

    心得: /** * 心得: * 1.连接方式主要有:直连同步,直连事务,直连管道,直连管道事务,分布式直连同步,分布式直连管道, * 分布式连接池同步,分布式连接池管道:普通连接池同步,普通连接池管道 ...