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成功了,那么在非虚拟环境中在安装一次

原文地址:https://www.cnblogs.com/jingxuan-li/p/9503269.html

时间: 2024-08-05 21:55:30

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

ava调用WebService接口实现发送手机短信验证码功能

二:前台的注册页面的代码:reg.jsp  <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <%@page import="cn.gov.csrc.base.action.FindAllData&

JAVA发送手机短信

<p><span>JAVA发送手机短信,流传有几种方法:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册;(2)使用短信mao的方式进行短信的发送,这种方式应该是比较的常用,前提是需要购买硬件设备,呵呵;</span></p> import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient

简单实现发送手机短信

C#简单实现发送手机短信 偶然想起,像编写一个从电脑向手机发送短信的程序,从网上查找到有三种方式:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册;(2)使用短信mao的方式进行短信的发送,这种方式应该是比较的常用,前提是需要购买硬件设备,这个就不考虑了(3)使用中国网建提供的SMS短信平台,但是,用完几条免费的后,就要收费了. 首先,我用C#实现第一种方法,发现总是错误,这个不解,后来从网上查找原因,有的说,新浪这个功能已

C#_发送手机短信

偶然想起,像编写一个从电脑向手机发送短信的程序,从网上查找到有三种方式:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册;(2)使用短信mao的方式进行短信的发送,这种方式应该是比较的常用,前提是需要购买硬件设备,这个就不考虑了(3)使用中国网建提供的SMS短信平台,但是,用完几条免费的后,就要收费了. 首先,我用C#实现第一种方法,发现总是错误,这个不解,后来从网上查找原因,有的说,新浪这个功能已经不用了,我也不太清楚,就

Spring Integration - 自动轮询发送手机短信

Spring Integration 配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:int="http://www.sprin

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

今天闲来无事,在微博上看到一个关于用java实现的一个发送手机短信的程序,看了看,写的不太相信,闲的没事,把他整理下来,以后可能用得着 JAVA发送手机短信,流传有几种方法:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册;(2)使用短信mao的方式进行短信的发送,这种方式应该是比较的常用,前提是需要购买硬件设备,呵呵(3)使用中国网建提供的SMS短信平台(申请账号地址:http://sms.webchinese.cn/de

Atitit. 破解 &#160;拦截 绕过 网站 手机 短信 验证码 &#160;方式 v2 attilax 总结

Atitit. 破解  拦截 绕过 网站 手机 短信 验证码  方式 v2 attilax 总结 1. 验证码的前世今生11.1. 第一代验证码 图片验证码11.2. 第二代验证码  用户操作 ,比如要求拖动等21.3. 第三代验证码 手机验证码 短信验证码22. 短信验证码的原理23. 常用破解法23.1. 漏洞绕过法23.2. 手机 软件转发法23.3. 手机api法33.4. 默认万能密码法 测试维护万能验证码33.5. 网站服务器短信发出截获33.6. 配置文件法33.7. 前端源码截获

手机短信验证码时间倒计时

app 进入后台后,实现手机短信验证码时间不间断倒计时 //当app进入手机后台和手机前台时获取时间 - (void)applicationDidEnterBackground:(UIApplication *)application { NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0]; NSTimeInterval a=[dat timeIntervalSince1970] * 1000; NSString *timeString =

C#批量发送手机短信——云通讯平台

云通讯平台:http://www.yuntongxun.com 1.在云通讯平台建短信模板 2.通过上述账号信息编辑如下: //phoneNumber 发送到的手机号 content 短信内容 public ResponseMessage SmsSend(string phoneNumber, string content) { CCPRestSDK api = new CCPRestSDK(); //ip格式如下,不带https:// bool isInit = api.init("app.c