python web验证码_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 importAcsClientfrom aliyunsdkcore.request importCommonRequestclassAlidayu(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")defsend_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")defsms_captcha():

telephone= request.args.get("telephone")if nottelephone:return restful.params_error(message="请输入手机号码")#借用图形验证码类中的获取随机验证码的方法

captcha = Captcha.gene_text(numbers=4).replace(" ", "")#上面的代码你可以删掉,把telephone换成具体的手机号码,captcha换成具体的验证码值

alidayu =Alidayu()ifalidayu.send_sms(telephone, captcha):#可以print打印一下验证

returnrestful.success()else:return restful.params_error(message="验证码发送失败!")

原文:https://www.cnblogs.com/aitiknowledge/p/11669114.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习:样本集、验证集(开发集)、测试集

样本集、验证集(开发集)、测试集。 Ripley, B.D(1996)在他的经典专著Pattern Recognition and Neural Networks中给出了这三个词的定义。 Training set: A set of examples used for learning, which is to fit the parameters [i…

Linux ftp传送问题 WARNING! 258831 bare linefeeds received in ASCII mode

WARNING! 258831 bare linefeeds received in ASCII mode 原因是传输时ftp的传输类型不一致。 在上传的时候,选择传输类型为 二进制 在Linux上用ftp命令get的时候,也要设置二进制 ftp> binary // 设置传输方式为binary

html输入支付密码样式,基于JS实现类似支付宝支付密码输入框

基于JS实现类似支付宝支付密码输入框2019-01-06编程之家https://www.jb51.cc编程之家收集整理的这篇文章主要介绍了基于JS实现类似支付宝支付密码输入框,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。本文实现的是一个类似支付…

海康+萤石云+云存储多少钱一个月_400万极清画质 萤石C6Wi智能家居摄像机

作为全球最大安防企业海康威视旗下子品牌,萤石以“家庭安防”切入智能家居市场,萤石C6Wi作为一款融合目前市面上云台摄像头最新设计和最全功能的产品,其外观设计获得多项国际大奖,支持2K分辨率(25601440)及4倍变焦拍摄、微光全彩、…

unzip 报错error [clas.zip]:  missing 1844 bytes in zipfile

error [clas.zip]: missing 1844 bytes in zipfile 解决方法: http://blog.csdn.net/zengmingen/article/details/78604574

Vue+axios统一接口管理

通过axios请求接口已经很简单了,但最近在做一个vue项目,想着把axios请求再封装一下,这样api就可以只在一处配置成方法,在使用的时候直接调用这个方法。 但咱们不用每个接口都定义成一个啰嗦的axios请求方法,既然是想简…

html网页 table布局实例,HTML用Table表格对网页布局

HTML是用于开发网页的“超文本标记语言”,今天我们一起来学习一下HTMLCSS网页布局中Table布局方式。常见的网页布局用CSS而言一般有经典行布局、经典列布局、双飞翼布局、圣杯布局等。今天小编教大家用Table表格布局。大家先来欣赏几个网页:这几个网页布…

vue设置输入框输入长度_Vue实现input宽度随文字长度自适应操作

业务需求,输入文字,后面的元要紧随其后,奈何input默认是有宽度,我想要达到,输入文字,动态改变input的宽度,试了很多方法,目前自己琢磨一种,有遇到问题的可以参考一下,直接…

JDBC 连接Hive 简单样例(开启Kerberos)

今天在移动的云平台上通过jdbc连接hive,发现云平台使用了 kerberos的认证。与宁波实验环境不同。 发现一文解决了问题,转载如下: 原文地址:http://blog.csdn.net/zengmingen/article/details/78605086 -----------------------…

新年快乐轮播特效html,基于owl-carousel的卡片水平轮播展示特效

这是一款基于owl-carousel的卡片水平轮播展示特效。该卡片轮播展示特效可以通过前后导航按钮来切换卡片,它是响应式设计,在手机等小屏幕设备上,会自动调节为只展示一个卡片。使用方法在页面中引入bootstrap.css和style.css文件,以…

parameter缩略语_“参数”的英文缩写有吗?

展开全部“参数”的英文e69da5e887aa3231313335323631343130323136353331333365643662缩写是“parm”。1.音标:[ prɑ:m ]2.具体含义:参数3.双语例句:It involves the same parameter as that involved in the enhancement factor for coagul…

JDBC实现从Hive抽取数据导入Oracle

环境:浙江移动华为云平台 云平台大数据采用了 Kerberos 认证。 开发历程: 1、在宁波大数据实验环境测试通过了JDBC实现从Hive抽取数据导入Oracle功能。 2、通过查看其它项目的数据库访问配置,知道了云平台上的oracle配置。 3、获取hive的…

加拿大计算机专业学什么,加拿大哥伦比亚大学计算机专业课程

计算机专业是加拿大哥伦比亚大学研究生热门专业,很多准备申请加拿大研究生留学的都非常关心加拿大英属哥伦比亚大学计算机专业研究生申请需要注意哪些问题?针对这个问题,出国留学小编为大家进行简要介绍。英属哥伦比亚大学计算机科学硕士专业优势&#…

PC,移动端H5实现实现小球加入购物车效果

HTML部分&#xff1a; <!DOCTYPE html> <html> <head><meta http-equiv"content-type" content"text/html; charsetUTF-8"><title>基于jquery.fly模仿天猫抛物线加入购物车特效代码</title><style>* {margin: 0…

云桌面部署_云桌面时代降临-青椒云工作站

云计算理念是当代互联网时代的新型理念&#xff0c;用户享受的所有资源、所有应用程序全部都由一个存储和运算能力超强的云端后台来提供。云桌面是基于云计算技术&#xff0c;实现各种终端设备之间的互联互通。我们的电子设备等都只是一个单纯的显示和操作终端&#xff0c;它们…

一些配置文件

--用户用linux用户&#xff0c;配置hadoop的Linux用户。非hive连接mysql的用户 HIVE_DRIVERorg.apache.hive.jdbc.HiveDriver HIVE_URLjdbc:hive2://192.168.78.128:10000/default HIVE_UserName root HIVE_PassWord 123456 ORACLE_DRIVERoracle.jdbc.driver.OracleDriver …

妙味css3课程---1-1、css中自定义属性可以用属性选择器么

妙味css3课程---1-1、css中自定义属性可以用属性选择器么 一、总结 一句话总结&#xff1a;可以的。 1、如何实现用属性选择器实现a标签根据href里面含有的字段选择背景图片&#xff1f; p a[href*text]{background-image:url(img/text.gif);} 2、浏览器前缀在js中怎么写&#…

吉林大学计算机与科学专业排名,吉林大学专业排名 哪些王牌专业推荐就读

吉林大学&#xff0c;简称“吉大”&#xff0c;位于吉林省省会长春。是一所“985”、“211”、“双一流”大学。下面我们将要来了解到的是吉林大学的专业排名&#xff0c;他的王牌专业有哪些&#xff0c;一起来看一下吧&#xff01;吉林大学专业排名 哪些王牌专业推荐就读吉林大…

c51为啥要宏定义时钟_51单片机时钟实训报告

时、分、秒计时器设计一、任务及要求用51单片机设计时、分、秒计时器&#xff0c;具体要求如下。1、具有时、分、秒计时功能和8位数码管显示功能&#xff0c;显示格式为&#xff1a;“时&#xff0d;分&#xff0d;秒”&#xff1b;2、用Proteus设计仿真电路进行结果仿真&#…

servlet获取不到Angular4 post过来的参数

副标题&#xff1a;Java如何从HttpServletRequest中读取HTTP请求的body 今天接触一个项目&#xff0c;前台用angular4 post访问后台&#xff0c; this.httpService.post({url: quality/IMSI_MO, IMSImsg: this.InputMsg, TIME1: time1, TIME2: time2 }).subscribe(res > {t…