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简单调用MySQL存储过程并获得返回值的方法
Jul 20 Python
Python 实现引用其他.py文件中的类和类的方法
Apr 29 Python
python3结合openpyxl库实现excel操作的实例代码
Sep 11 Python
5款Python程序员高频使用开发工具推荐
Apr 10 Python
python实现数据分析与建模
Jul 11 Python
python之pexpect实现自动交互的例子
Jul 25 Python
Python完成哈夫曼树编码过程及原理详解
Jul 29 Python
使用Python实现图像标记点的坐标输出功能
Aug 14 Python
TensorFlow实现打印每一层的输出
Jan 21 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
Mar 08 Python
python类共享变量操作
Sep 03 Python
Python中过滤字符串列表的方法
Dec 22 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中动态显示签名和ip原理
2007/03/28 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
关于图片验证码设计的思考
2007/01/29 Javascript
基于jQuery的固定表格头部的代码(IE6,7,8测试通过)
2010/05/18 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
js实现的类似于asp数据字典的数据类型代码实例
2014/09/03 Javascript
jQuery中last()方法用法实例
2015/01/06 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
JavaScript中数组继承的简单示例
2015/07/29 Javascript
如何实现JavaScript动态加载CSS和JS文件
2020/12/28 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
Bootstrap模态窗口源码解析
2017/02/08 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
值得分享和收藏的xmlplus组件学习教程
2017/05/05 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
React学习笔记之高阶组件应用
2018/06/02 Javascript
使用JavaScript破解web
2018/09/28 Javascript
Nginx设置为Node.js的前端服务器方法总结
2019/03/27 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
2020/04/20 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
2020/08/12 Javascript
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
2021/01/05 Vue.js
[02:41]辉夜杯现场一家三口 “我爸玩风行 我玩血魔”
2015/12/27 DOTA
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
python开发之thread实现布朗运动的方法
2015/11/11 Python
Python logging模块用法示例
2018/08/28 Python
python help函数实例用法
2020/12/06 Python
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
您的时尚,您的生活方式:DTLR Villa
2019/12/25 全球购物
汽修专业学生自我鉴定
2013/11/16 职场文书
优秀企业获奖感言
2014/02/01 职场文书
个人合作协议书范本
2014/04/18 职场文书
学生检讨书如何写
2014/10/30 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS