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模块之StringIO使用示例
Apr 08 Python
Python利用递归和walk()遍历目录文件的方法示例
Jul 14 Python
Windows下将Python文件打包成.EXE可执行文件的方法
Aug 03 Python
Python封装原理与实现方法详解
Aug 28 Python
python 产生token及token验证的方法
Dec 26 Python
python中selenium操作下拉滚动条的几种方法汇总
Jul 14 Python
python向图片里添加文字
Nov 26 Python
基于python+selenium的二次封装的实现
Jan 06 Python
Python守护进程实现过程详解
Feb 10 Python
pytorch中使用cuda扩展的实现示例
Feb 12 Python
python和php哪个更适合写爬虫
Jun 22 Python
python如何在word中存储本地图片
Apr 07 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 分页类(模仿google)-面试题目解答
2009/09/13 PHP
php 多关键字 高亮显示实现代码
2012/04/23 PHP
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
2013/06/21 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
ext监听事件方法[初级篇]
2008/04/27 Javascript
js获取网页高度(详细整理)
2012/12/28 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
深入了解javascript中的prototype与继承
2013/04/14 Javascript
仿百度联盟对联广告实现代码
2014/08/30 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
利用JS如何计算字符串所占字节数示例代码
2017/09/13 Javascript
vue路由拦截及页面跳转的设置方法
2018/05/24 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
python抓取网页中的图片示例
2014/02/28 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
Python实现输出程序执行进度百分比的方法
2017/09/16 Python
Python3生成手写体数字方法
2018/01/30 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
python 实现返回一个列表中出现次数最多的元素方法
2019/06/11 Python
python 实现识别图片上的数字
2019/07/30 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
Pytorch evaluation每次运行结果不同的解决
2020/01/02 Python
python利用线程实现多任务
2020/09/18 Python
生物制药毕业生自荐信
2013/10/16 职场文书
教师学习培训邀请函
2014/02/04 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
英文推荐信格式范文
2014/05/09 职场文书
党员评议个人总结
2014/10/20 职场文书
2014年学校卫生工作总结
2014/11/20 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
SQL IDENTITY_INSERT作用案例详解
2021/08/23 MySQL