Flask项目中实现短信验证码和邮箱验证码功能


Posted in Python onDecember 05, 2019

Flask是一个用Python编写的Web应用程序框架,Flask是python的web框架,最大的特征是轻便,让开发者自由灵活的兼容要开发的feature。 它由 Armin Ronacher 开发,他领导一个名为Pocco的国际Python爱好者团队。 Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。两者都是Pocco项目。

这篇文章给大家介绍Flask项目中实现短信验证码和邮箱验证码功能,具体内容如下所示:

一、发送邮箱验证码

1、使用QQ邮箱发送验证码

①配置

Flask项目中实现短信验证码和邮箱验证码功能

开启pop3/smtp服务

2、应用

①前端页面

②config.py

# 邮箱配置
# MAIL_USE_TLS:端口号587
# MAIL_USE_SSL:端口号465
# QQ邮箱不支持非加密方式发送邮件
# 发送者邮箱的服务器地址
MAIL_SERVER = "smtp.qq.com"
MAIL_PORT = '587'
MAIL_USE_TLS = True
# MAIL_USE_SSL
MAIL_USERNAME = "1414518976@qq.com"
MAIL_PASSWORD = "*****" # 生成授权码,授权码是开启smtp服务后给出的
MAIL_DEFAULT_SENDER = 1414518976@qq.com

③views.py

点击获取验证码,进入到以下视图,发送邮件,把验证码存到memcache数据库。

from flask_mail import Message,Mail
mail = Mail()
@bp.route('/email_captcha/')
@login_requires
def email_captcha():
  email = request.args.get('email')
  if not email:
    return restful.params_error('请输入邮箱') #restful. 封装的函数,返回前端数据
  '''
  生成随机验证码,保存到memcache中,然后发送验证码,与用户提交的验证码对比
  '''
  captcha = str(uuid.uuid1())[:6] # 随机生成6位验证码
  # 给用户提交的邮箱发送邮件
  message = Message('Python论坛邮箱验证码', recipients=[email], body='您的验证码是:%s' % captcha)
  try:
    mail.send(message) # 发送
  except:
    return restful.server_error()
  mbcache.set(email, captcha)
  return restful.success()

点击立即修改,

        以post请求发到后台,对用户提交的数据进行校验:拿出memcache中存储的验证码与用户提交的验证码对比,校验邮箱格式。校验通过后把新邮箱保存到数据库,返回前端提示信息。邮箱验证功能完成。

二、实现短信验证码

1、平台以及配置

平台:阿里大于

配置:1、添加模板

Flask项目中实现短信验证码和邮箱验证码功能

 2、添加签名

Flask项目中实现短信验证码和邮箱验证码功能

3、获取

Flask项目中实现短信验证码和邮箱验证码功能

Flask项目中实现短信验证码和邮箱验证码功能

即下面的key和secret

2、flask中使用

config.py

#发送短信验证码配置
KEY="*******"
SECRET="*******"
alidayu.py发送短信功能实现
from aliyunsdkcore.client import AcsClient #需要先下载包
from aliyunsdkcore.request import CommonRequest
import config
def send_sms(telephone, captcha):
  client = AcsClient(config.KEY, config.SECRET, 'cn-hangzhou')
  request = CommonRequest()
  request.set_accept_format('json')
  request.set_domain('dysmsapi.aliyuncs.com')
  request.set_method('POST')
  request.set_protocol_type('https') # https | http
  request.set_version('2017-05-25')
  request.set_action_name('SendSms')
  request.add_query_param('RegionId', "cn-hangzhou")
  request.add_query_param('PhoneNumbers', telephone) #发送的手机号
  request.add_query_param('SignName', "flask论坛") #SignName签名
  request.add_query_param('TemplateCode', "SMS_174806057") #模板id
  code = {}
  code['code'] = captcha
  request.add_query_param('TemplateParam', code) #模板中要填入的数据
  response = client.do_action(request)
  # python2: print(response)
  return str(response, encoding='utf-8')

调用是send_sms('手机号','验证码'),即可发送短信。(当然余额得有钱.)

总结

以上所述是小编给大家介绍的Flask项目中实现短信验证码和邮箱验证码功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python中pygame模块用法实例
Oct 09 Python
Python2.x与Python3.x的区别
Jan 14 Python
浅谈numpy生成数组的零值问题
Nov 12 Python
Python中super函数用法实例分析
Mar 18 Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
Jun 27 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
Sep 17 Python
Python 下载及安装详细步骤
Nov 04 Python
Django 创建后台,配置sqlite3教程
Nov 18 Python
Python计算公交发车时间的完整代码
Feb 12 Python
Python编写memcached启动脚本代码实例
Aug 14 Python
如何在Python中妥善使用进度条详解
Apr 05 Python
Python for i in range ()用法详解
Sep 18 #Python
关于sys.stdout和print的区别详解
Dec 05 #Python
flask实现验证码并验证功能
Dec 05 #Python
使用python写一个自动浏览文章的脚本实例
Dec 05 #Python
Python字节单位转换实例
Dec 05 #Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 #Python
Python使用指定字符长度切分数据示例
Dec 05 #Python
You might like
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
2012/08/31 PHP
yii2利用自带UploadedFile实现上传图片的示例
2017/02/16 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
Mac OS X 系统下安装和部署Egret引擎开发环境
2014/09/03 Javascript
jQuery 动态云标签插件
2014/11/11 Javascript
JavaScript通过this变量快速找出用户选中radio按钮的方法
2015/03/23 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
2015/10/29 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
js for循环倒序输出数组元素的实例
2017/03/01 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
JavaScript命名空间模式实例详解
2019/06/20 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
JavaScript使用setTimeout实现倒计时效果
2021/02/19 Javascript
Python 条件判断的缩写方法
2008/09/06 Python
使用Python装饰器在Django框架下去除冗余代码的教程
2015/04/16 Python
python制作爬虫并将抓取结果保存到excel中
2016/04/06 Python
Python 迭代器与生成器实例详解
2017/05/18 Python
Python有序查找算法之二分法实例分析
2017/12/11 Python
5款非常棒的Python工具
2018/01/05 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
python实现猜数字游戏
2020/03/25 Python
Python Mock模块原理及使用方法详解
2020/07/07 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
2020/09/20 Python
通过css3的filter滤镜改变png图片的颜色的示例代码
2020/05/06 HTML / CSS
详解前端HTML5几种存储方式的总结
2016/12/27 HTML / CSS
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
党员服务承诺书
2014/05/28 职场文书
教师个人年度总结
2015/02/11 职场文书
导游词之舟山普陀山
2019/11/06 职场文书
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫