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多进程编程技术实例分析
Sep 16 Python
python编程实现12306的一个小爬虫实例
Dec 27 Python
python删除服务器文件代码示例
Feb 09 Python
详解python3中zipfile模块用法
Jun 18 Python
Python OpenCV处理图像之图像直方图和反向投影
Jul 10 Python
python对离散变量的one-hot编码方法
Jul 11 Python
Python学习笔记之Django创建第一个数据库模型的方法
Aug 07 Python
使用tqdm显示Python代码执行进度功能
Dec 08 Python
django框架ModelForm组件用法详解
Dec 11 Python
解决Python使用列表副本的问题
Dec 19 Python
Python logging模块handlers用法详解
Aug 14 Python
python 利用matplotlib在3D空间中绘制平面的案例
Feb 06 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中判断变量为空的几种方法分享
2013/08/26 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
给网站上的广告“加速”显示的方法
2007/04/08 Javascript
javascript数组组合成字符串的脚本
2021/01/06 Javascript
firefox事件处理之自动查找event的函数(用于onclick=foo())
2010/08/05 Javascript
jquery中的 $("#jb51")与document.getElementById("jb51") 的区别
2011/07/26 Javascript
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
js获取多个tagname的节点数组
2013/09/22 Javascript
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
javascript匿名函数应用示例介绍
2014/03/07 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
2014/10/26 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
2015/05/12 Javascript
jQuery中$.extend()用法实例
2015/06/24 Javascript
jQuery.prop() 使用详解
2015/07/19 Javascript
JS经典正则表达式笔试题汇总
2016/12/15 Javascript
ES6学习教程之模板字符串详解
2017/10/09 Javascript
jQuery zTree 异步加载添加子节点重复问题
2017/11/29 jQuery
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
vue 移动端适配方案详解
2018/11/15 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
2020/06/08 Javascript
vue将data恢复到初始状态 && 重新渲染组件实例
2020/09/04 Javascript
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
python topN 取最大的N个数或最小的N个数方法
2018/06/04 Python
python实现决策树分类
2018/08/30 Python
pandas去除重复列的实现方法
2019/01/29 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
吉尔德利巧克力公司:Ghirardelli Chocolate Company
2019/03/27 全球购物
老教师工作总结的自我评价
2013/09/27 职场文书
高中体育教学反思
2014/01/24 职场文书
2015年幼儿园毕业感言
2014/02/12 职场文书
感恩教育月活动总结
2014/07/07 职场文书
运动会广播稿200米(5篇)
2014/10/15 职场文书
2015年社区工作总结
2015/04/08 职场文书
Html分层的box-shadow效果的示例代码
2021/03/30 HTML / CSS
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技