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实现设置windows桌面壁纸代码分享
Mar 28 Python
Python中操作文件之write()方法的使用教程
May 25 Python
Python基于Matplotlib库简单绘制折线图的方法示例
Aug 14 Python
python如何派生内置不可变类型并修改实例化行为
Mar 21 Python
python模拟表单提交登录图书馆
Apr 27 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 Python
Python常用的json标准库
Feb 19 Python
python对象与json相互转换的方法
May 07 Python
selenium跳过webdriver检测并模拟登录淘宝
Jun 12 Python
使用python实现离散时间傅里叶变换的方法
Sep 02 Python
Pytorch之保存读取模型实例
Dec 30 Python
DataFrame 数据合并实现(merge,join,concat)
Jun 14 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和XSL stylesheets转换XML文档
2006/10/09 PHP
php错误级别的设置方法
2013/06/17 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
2016/11/21 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
php实现构建排除当前元素的乘积数组方法
2018/10/06 PHP
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
JavaScript程序设计之JS调试
2015/12/09 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
深入理解AngularJS中的ng-bind-html指令
2017/03/27 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
python中readline判断文件读取结束的方法
2014/11/08 Python
Python反射的用法实例分析
2018/02/11 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
python实现合并两个排序的链表
2019/03/03 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
html5实现移动端适配完美写法
2017/11/16 HTML / CSS
全球性的在线商店:Vogca
2019/05/10 全球购物
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
计算机专业学生求职信分享
2013/12/15 职场文书
大二自我鉴定
2014/01/31 职场文书
淘宝好评语大全
2014/05/05 职场文书
环境整治工作方案
2014/05/18 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
秋收起义观后感
2015/06/11 职场文书
独生子女证明范本
2015/06/19 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书
自愿离婚协议书范本2016
2016/03/18 职场文书