python web框架Flask——手机短信验证码
Posted xsha_h
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python web框架Flask——手机短信验证码相关的知识,希望对你有一定的参考价值。
下列代码都是以自己的项目实例讲述的,相关的文本内容很少,主要说明全在代码注释中。
我是使用阿里云云通信的短信服务,第一次使用会摸不着头绪,这里我们需要做些准备工作:
1、登陆自己的账号进入阿里云官网,没有账号的朋友们自行注册
2、在导航栏上搜索“短信服务”,没有添加的话应该会有“免费开通”按钮,再进入管理控制台(我们需要添加这个短信服务板块,这样控制台会有短信服务这个模块),管理控制台的页面:
3、添加api密钥,成功之后会自行生成一个入口api密钥 id 和 secret。
4、在第一张图片上点击“添加签名”和“添加模板”,添加完相关信息,需要相关人员审核。添加模板时需要注意:
5、写完所有的步骤,记得充值,冲个5块钱应该够了吧(反正是测试用的)
6、准备工作做完,现在接下来的都是复制粘贴代码了(python3的朋友需要:pip install aliyun-python-sdk-core-v3` python2的朋友:pip install aliyun-python-sdk-core)
7、发送短信api接口配置
from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest class Alidayu(object): """ api接口的初始化操作 accessKeyId: api密钥的入口id accessSecret: api密钥的入口密码 regionId: 一般是你云服务器的地区 以上三个参数必不可少,封装成客户端实例 发送配置(都是固定的配置)分别是发送短信的格式、域名、方式、协议、版本 """ def __init__(self): self.accessKeyId = "你的密钥入口id" self.accessSecret = "你的密钥入口secret" self.regionId = "cn-shanghai" # 一般是上海或者杭州 self.client = AcsClient(self.accessKeyId, self.accessSecret, self.regionId) # 发送配置(都是固定的配置) self.comRequest = CommonRequest() self.comRequest.set_accept_format("json") self.comRequest.set_domain("dysmsapi.aliyuncs.com") self.comRequest.set_method("POST") self.comRequest.set_protocol_type("https") self.comRequest.set_version("2017-05-25") def send_sms(self, telephone, code): """ 发送配置定义好,现在就是发送信息(验证码) 发送信息之前的四个参数也是必不可少的: 手机号码、短信签名名称、短信模板CODE、短信模板的内容参数值 最后通过客户发送即可 :param telephone: 手机号码 :param code: 随机验证码 :return: """ self.comRequest.set_action_name("SendSms") self.comRequest.add_query_param("PhoneNumbers", "你的手机号码") self.comRequest.add_query_param("SignName", "你的短信签名名称") self.comRequest.add_query_param("TemplateCode", "你的模板CODE") # 这个是你配置的短信模板的内容里的参数名称,变量名一定要一样 self.comRequest.add_query_param("TemplateParam", "{\\"code\\":\\"%s\\"}" % code) response = self.client.do_action(self.comRequest) print(response) return response
8、编写一个视图函数,通过url访问就可以了
@bp.route("/sms_captcha") def sms_captcha(): telephone = request.args.get("telephone") if not telephone: return restful.params_error(message="请输入手机号码") # 借用图形验证码类中的获取随机验证码的方法 captcha = Captcha.gene_text(numbers=4).replace(" ", "") # 上面的代码你可以删掉,把telephone换成具体的手机号码,captcha换成具体的验证码值 alidayu = Alidayu() if alidayu.send_sms(telephone, captcha): # 可以print打印一下验证 return restful.success() else: return restful.params_error(message="验证码发送失败!")
以上是关于python web框架Flask——手机短信验证码的主要内容,如果未能解决你的问题,请参考以下文章
python web框架Flask——图形验证码及验证码的动态刷新