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 yield使用方法示例
Dec 04 Python
python中stdout输出不缓存的设置方法
May 29 Python
利用Python的Twisted框架实现webshell密码扫描器的教程
Apr 16 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
Jan 05 Python
Python使用pip安装pySerial串口通讯模块
Apr 20 Python
用Python下载一个网页保存为本地的HTML文件实例
May 21 Python
浅析PyTorch中nn.Module的使用
Aug 18 Python
如何获取Python简单for循环索引
Nov 21 Python
python代数式括号有效性检验示例代码
Oct 04 Python
python 录制系统声音的示例
Dec 21 Python
PyTorch 如何设置随机数种子使结果可复现
May 12 Python
分享Python获取本机IP地址的几种方法
Mar 17 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下用GD生成生成缩略图的两个选择和区别
2007/04/17 PHP
php中关于普通表单多文件上传的处理方法
2011/03/25 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
2017/06/12 PHP
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
基于jQuery的图片剪切插件
2011/08/03 Javascript
javascript中的delete使用详解
2013/04/11 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
js拼接html字符串的注意事项
2016/10/13 Javascript
Bootstrap基本样式学习笔记之按钮(4)
2016/12/07 Javascript
第一个Vue插件从封装到发布
2017/11/22 Javascript
MVVM框架下实现分页功能示例
2018/06/14 Javascript
nodejs中request库使用HTTPS代理的方法
2019/04/30 NodeJs
JS实现音量控制拖动
2020/01/15 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
[01:15:18]2014 DOTA2国际邀请赛中国区预选赛 LGD VS Speed Gaming.cn
2014/05/22 DOTA
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
Python随机生成手机号、数字的方法详解
2017/07/21 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
2019/04/18 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
python中如何使用虚拟环境
2020/10/14 Python
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
新学期班主任寄语
2014/01/18 职场文书
毕业典礼演讲稿
2014/05/13 职场文书
小学班主任培训方案
2014/06/04 职场文书
助学金感谢信
2015/01/20 职场文书
投资意向协议书
2015/01/29 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
简单介绍Python的第三方库yaml
2021/06/18 Python
python 中的jieba分词库
2021/11/23 Python
Win11 PC上的Outlook搜索错误怎么办?
2022/07/15 数码科技