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 25 Python
Python下的Softmax回归函数的实现方法(推荐)
Jan 26 Python
Flask实现图片的上传、下载及展示示例代码
Aug 03 Python
Python实现 版本号对比功能的实例代码
Apr 18 Python
django url到views参数传递的实例
Jul 19 Python
Python 写入训练日志文件并控制台输出解析
Aug 13 Python
基于Python中的yield表达式介绍
Nov 19 Python
python 实现屏幕录制示例
Dec 23 Python
Python代码一键转Jar包及Java调用Python新姿势
Mar 10 Python
利用python在excel中画图的实现方法
Mar 17 Python
使用已经得到的keras模型识别自己手写的数字方式
Jun 29 Python
python如何正确使用yield
May 21 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实现像JSP,ASP里Application那样的全局变量
2007/01/12 PHP
用PHP代码在网页上生成图片
2015/07/01 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
2则自己编写的jQuery特效分享
2015/02/26 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
解决layer.msg 不居中 ifram中的问题
2019/09/05 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
VUE中使用HTTP库Axios方法详解
2020/02/05 Javascript
小程序实现上下切换位置
2020/11/16 Javascript
Python字符遍历的艺术
2008/09/06 Python
python实现文件名批量替换和内容替换
2014/03/20 Python
python自动化测试之setUp与tearDown实例
2014/09/28 Python
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
局域网内python socket实现windows与linux间的消息传送
2019/04/19 Python
Python Django给admin添加Action的方法实例详解
2019/04/29 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
Python matplotlib实时画图案例
2020/04/23 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
旅游管理专业生自荐信范文
2014/01/02 职场文书
房地产销售计划书
2014/01/10 职场文书
高中考试作弊检讨书
2014/01/14 职场文书
前厅收银主管岗位职责
2014/02/04 职场文书
班组长竞聘书
2014/03/31 职场文书
技术支持岗位职责
2015/02/13 职场文书
小学生大队委竞选稿
2015/11/20 职场文书
浅析MySQL如何实现事务隔离
2021/06/26 MySQL
带你了解CSS基础知识,样式
2021/07/21 HTML / CSS