图片验证码
前期准备
首页的注册功能中的图片验证码功能实现:
功能逻辑图:
代码实现
首先进入templates目录下的index页面,如下图进行配置:
进入passport目录,init文件配置:
from flask import Blueprint
passport_blue = Blueprint('passport',__name__, url_prefix="/passport")
from . import views
views文件配置:
from . import passport_blue
from flask import request, abort, current_app, make_response
from info.utils.captcha.captcha import captcha
from info import sr
@passport_blue.route('/image_code')
def image_code():
"""
生成图片验证码
1.接收参数(uuid)
2.校验参数
2.1校验是否携带参数
3.生成图片验证
4.将图片验证码的文本保存到Redis中
5.返回图片对象
:return: 图片响应对象
"""
# 生成图片验证码
# 1.接收参数(uuid)
imageCodeId = request.args.get('imageCodeId')
# 2.校验参数
# 2.1校验是否携带参数
if not imageCodeId:
abort(403)
# 3.生成图片验证
name, imageCodeIdText, imageCode = captcha.generate_captcha()
# 4.将图片验证码的文本保存到Redis中
try:
sr.set("imageCode:"+imageCodeId, imageCodeIdText)
except Exception as e:
current_app.logger.error(e)
abort(500)
# 5.返回图片对象
response = make_response(imageCode)
response.headers['Content-Type'] = 'image/jpg'
return response
最终效果: