Flask项目中实现短信验证码和邮箱验证码功能
作者:__tian__ 发布时间:2022-02-24 00:12:58
标签:flask,验证码
Flask是一个用Python编写的Web应用程序框架,Flask是python的web框架,最大的特征是轻便,让开发者自由灵活的兼容要开发的feature。 它由 Armin Ronacher 开发,他领导一个名为Pocco的国际Python爱好者团队。 Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。两者都是Pocco项目。
这篇文章给大家介绍Flask项目中实现短信验证码和邮箱验证码功能,具体内容如下所示:
一、发送邮箱验证码
1、使用QQ邮箱发送验证码
①配置
开启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、添加模板
2、添加签名
3、获取
即下面的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项目中实现短信验证码和邮箱验证码功能网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://blog.csdn.net/T_I_A_N_/article/details/101355022


猜你喜欢
- 本系列文章是我在sqlskill.com的PAUL的博客看到的,很多误区都比较具有典型性和代表性,原文来自T-SQL Tuesday #11
- 前言最近在学习Python的面向对象编程,以前是没有接触过其它的面向对象编程的语言,因此学习这一部分是相当带劲的,这里也总结一下。概述pyt
- 1.字符串的驻留机制字符串:在Python中字符串是基本的数据类型,是一个不可变的字符序列2.什么叫字符串的驻留机制仅保存一份相同且不可变字
- 什么是接口接口是一种定义规范,规定了对象应该具有哪些方法,但并不指定这些方法的具体实现。在 Go 语言中,接口是由一组方法签名(方法名、参数
- 自定义可迭代的类列表可以获取列表的长度,然后使用变量i对列表索引进行循环,也可以获取集合的所有元素,且容易理解。没错,使用列表的代码是容易理
- 在同事那整了个免安装版的Mysql,然后添加到window服务,但是中间出现很多问题,总结一下个人经验,希望其他人不要走弯路。1)在同事那或
- 代码如下:Class Vector Private vector_datas() Private&n
- Protobuf是什么Protobuf实际是一套类似Json或者XML的数据传输格式和规范,用于不同应用或进程之间进行通信时使用。通信时所传
- 一种类似Flask开发的WebSocket-Server服务端框架,适用python3.X1、安装模块Pywsspip install py
- 可以用函数 json.dumps()将 Python 对象编码转换为字符串形式。例如:import json python_obj = [[
- Pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持。Pandas的名称来自于面板数据(pan
- 最近在一个项目中遇到一个查询页面,其中一个查询条件是根据选择的年份、月以及周数显示选择的该周从几号到几号,这样一个需求。在网上搜
- NopCommerce支持灵活的插件机制,所谓Web系统插件,其实也就是可以像原系统的一部分一样使用。Web系统的使用方式就是客户端发送一个
- 本文实例为大家分享了OpenLayers3实现图层控件的具体代码,供大家参考,具体内容如下1. 前言在实际应用中,我们将加载到地图容器中的图
- 最近在做一个电信的MIS系统,由于数据库的数据量庞大(最少也有500万),发现了一个sql server 长时间占有内存的现象。当你查询数据
- 失效的书签们我们日常浏览网站的时候,时不时会遇到些新奇的东西( 你懂的.jpg ),于是我们就默默的点了个收藏或者加书签。然而当我们面对成百
- 傅立叶变换时数字信号处理的重要方法之一,是法国数学家傅立叶在1807年在法国科学学会上发表的一篇文章中所提出的,在文章中使用了正弦函数描述温
- 一句话概括:数据劫持(Object.defineProperty)+发布订阅模式双向数据绑定有三大核心模块(dep 、observer、wa
- 前言昨天写小项目的时候遇到了一个需求:把txt文档的数据导入到mysql数据库中,开始本来想直接用Mysql Workbench导入TXT文
- 案例:该数据集的是一个关于每个学生成绩的数据集,接下来我们对该数据集进行分析,判断学生是否适合继续深造数据集特征展示1 GRE