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之编写简单简单连接数据库并执行查询操作
Feb 27 Python
Python正则表达式非贪婪、多行匹配功能示例
Aug 08 Python
Python3 实现随机生成一组不重复数并按行写入文件
Apr 09 Python
Selenium启动Chrome时配置选项详解
Mar 18 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
Apr 20 Python
django的403/404/500错误自定义页面的配置方式
May 21 Python
如何理解Python中包的引入
May 29 Python
python实现计算器简易版
Dec 17 Python
利用python绘制正态分布曲线
Jan 04 Python
python实现学生信息管理系统源码
Feb 22 Python
pycharm Tab键设置成4个空格的操作
Feb 26 Python
Python基础学习之奇异的GUI对话框
May 27 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 URL跳转代码 减少外链
2011/06/25 PHP
PHP的PSR规范中文版
2013/09/28 PHP
PHP curl使用实例
2015/07/02 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
2018/06/19 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
Prototype使用指南之string.js
2007/01/10 Javascript
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
javascript HTML+CSS实现经典橙色导航菜单
2016/02/16 Javascript
JavaScript隐式类型转换
2016/03/15 Javascript
总结js函数相关知识点
2018/02/27 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
jquery实现自定义树形表格的方法【自定义树形结构table】
2019/07/12 jQuery
Layui 数据表格批量删除和多条件搜索的实例
2019/09/04 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
2019/10/25 Javascript
NodeJS http模块用法示例【创建web服务器/客户端】
2019/11/05 NodeJs
Python中的index()方法使用教程
2015/05/18 Python
快速了解Python相对导入
2018/01/12 Python
NumPy 如何生成多维数组的方法
2018/02/05 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
2020/01/02 Python
python可迭代对象去重实例
2020/05/15 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
2020/10/29 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
Lee牛仔裤澳大利亚官网:美国著名牛仔裤品牌
2017/09/02 全球购物
财务助理岗位职责
2013/11/10 职场文书
危爆物品安全大检查大整治工作方案
2014/05/03 职场文书
《赵州桥》教学反思
2016/02/17 职场文书
MySQL 数据丢失排查案例
2021/05/08 MySQL
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
2022/05/25 Servers
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS