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语句、函数与方法的使用技巧总结
Dec 08 Python
对Python中的@classmethod用法详解
Apr 21 Python
python write无法写入文件的解决方法
Jan 23 Python
Python Celery多队列配置代码实例
Nov 22 Python
解决tensorflow由于未初始化变量而导致的错误问题
Jan 06 Python
Python代码需要缩进吗
Jul 01 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 Python
Python爬取豆瓣数据实现过程解析
Oct 27 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 Python
Python并发爬虫常用实现方法解析
Nov 19 Python
Python关于OS文件目录处理的实例分享
May 23 Python
分享3个非常实用的 Python 模块
Mar 03 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函数之日期时间函数date()使用详解
2013/09/09 PHP
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
PHP实现原比例生成缩略图的方法
2016/02/03 PHP
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
Microsfot .NET Framework4.0框架 安装失败的解决方法
2013/08/14 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
js模拟C#中List的简单实例
2014/03/06 Javascript
Vuex简单入门
2017/04/19 Javascript
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
jQuery使用动画队列自定义动画操作示例
2018/06/16 jQuery
angularjs http与后台交互的实现示例
2018/12/21 Javascript
Nodejs封装类似express框架的路由实例详解
2020/01/05 NodeJs
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
vue组件实现移动端九宫格转盘抽奖
2020/10/16 Javascript
python通过socket查询whois的方法
2015/07/18 Python
python删除本地夹里重复文件的方法
2020/11/19 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
Python turtle库绘制菱形的3种方式小结
2019/11/23 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
Python如何转换字符串大小写
2020/06/04 Python
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
Java程序员面试90题
2013/10/19 面试题
电脑租赁公司创业计划书
2014/01/08 职场文书
模具专业毕业推荐信
2014/03/08 职场文书
学习保证书范文
2014/04/30 职场文书
工厂车间标语
2014/06/19 职场文书
接收函格式
2015/01/30 职场文书
员工家属慰问信
2015/03/24 职场文书
何玥事迹观后感
2015/06/16 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
Python OpenCV 图像平移的实现示例
2021/06/04 Python
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技