Flask生成图片验证码的功能

1.将写好的包直接放入项目的utils文件夹中,注:安装 Pillow 时需要安装9.4.0;pip install Pillow==9.5.0 否则会报错

包的下载链接:infomation36: B站新闻管理系统项目,flask - Gitee.com

2.视图函数的完成
python 复制代码
from flask import request, current_app, make_response
from . import passport_blue
from ... import redis_store, constants
from ...utils.captcha.captcha import captcha


@passport_blue.route('/image_code')
def image_code():
    # 1. 获取前端传递过来的参数
    cur_id = request.args.get('cur_id')
    pre_id = request.args.get('pre_id')

    # 2. 调用captcha工具获取图片验证码,验证码的值,验证码图片(二进制)
    code_name, code_text, code_image = captcha.generate_captcha()

    # 3. 将图片验证码的值保存到redis中
    try:
        # 参数1:key,参数2:value,参数3:有效期
        redis_store.set("image_code:{}".format(cur_id), code_text, constants.IMAGE_CODE_REDIS_EXPIRES)

        # 4. 判断是否有上一次的图片验证码
        if pre_id:
            redis_store.delete('image_code:{}'.format(pre_id))
    except Exception as e:
        current_app.logger.error(e)
        return '图片验证码获取失败!'
    # 返回图片
    response = make_response(code_image)
    response.headers['Content-Type'] = 'image/png'
    return response
3. 前端的使用

---html部分:

html 复制代码
<img src="/passport/image_code" class="get_pic_code" onclick="generateImageCode()">

---js部分

javascript 复制代码
// TODO 生成一个图片验证码的编号,并设置页面中图片验证码img标签的src属性
function generateImageCode() {

    //1.生成一个随机字符串
    imageCodeId = generateUUID();

    //2.拼接图片url地址
    image_url = '/passport/image_code?cur_id=' + imageCodeId + "&pre_id=" + preimageCodeId

    //3.将地址设置到image标签的src属性中,为image_url
    $('.get_pic_code').attr('src', image_url)

    //4.记录上一次的编号
    preimageCodeId = imageCodeId

}
相关推荐
破茧蝴蝶3 小时前
Python分布式爬虫完整教程
开发语言·python
benchmark_cc3 小时前
量化系统架构设计:为什么应该将数据获取与策略逻辑解耦?
python·数据分析·pandas·量化交易·股票数据·quantdash
凤山老林3 小时前
Spring Boot 启动冲刺:耗时剖析、懒加载策略与事件驱动初始化优化
spring boot·后端·python
小白快快跑哦3 小时前
python-字符串全解(六):正则表达式-逻辑运算或
python·正则表达式·字符串·逻辑运算
Thinker QAQ3 小时前
并发编程(九):BlockingQueue 与 Channel——语言层的原子性、可见性与有序性
java·python·go·并发编程·channel·blockingqueue·message passing
道满科技4 小时前
Function Calling 参数总出错?只修参数就行
linux·windows·python
朱涛的自习室4 小时前
我给 Gemini 4 和 DeepSeek 搞了套「末位淘汰」,AI 干活会更猛吗?(Day 3)
android·前端·后端
霸道流氓气质5 小时前
RAG 可观测性与生产监控实战:四层遥测模型、五大仪表盘与 OpenTelemetry 全链路追踪的 Java 生产级实现
java·人工智能·python
woniu_maggie6 小时前
SAP MDG主数据治理实战:从架构原理到项目实施全解析
后端