Django集成图片验证码功能:基于django-simple-captcha实现
一、验证码工具选择django-simple-captcha 是一款轻量且高度可定制的 Django 验证码应用,具有以下优势
[*]多样化验证码类型:支持随机字符、数学运算、字典单词等多种验证形式
[*]高度可定制:可自定义验证码样式、噪声效果和过滤规则
[*]良好的交互性:支持 AJAX 动态刷新,无需重新加载页面
[*]音频输出支持 :提供音频输出功能,提升可访问性
二、验证码工作流程
一个完整的验证码验证流程如下:
[*]用户访问页面时,前端请求生成验证码
[*]后端生成验证码图片和对应的验证 key,返回给前端
[*]用户输入验证码并提交表单,前端将用户输入与验证 key 一同发送到后端
[*]后端进行二次校验,验证用户输入的正确性
[*]返回校验结果给前端,完成整个验证流程
三、安装与基础配置
安装依赖包
安装
pip install django-simple-captcha项目配置
配置 settings.py
# `INSTALLED_APPS` 中添加 `'captcha'`
INSTALLED_APPS = [
# ...
'captcha',
]
### 验证码配置
CAPTCHA_CHALLENGE_FUNCT = "captcha.helpers.math_challenge"# 验证码生成方式
CAPTCHA_TIMEOUT = 1# 验证码有效期,单位为分钟迁移数据库(验证码需要存储验证记录)
python manage.py migrate captcha四、核心功能实现
后端实现
下面通过一个视图集实现验证码的生成和验证功能,适用于前后端分离架构。点击查看完整代码
配置urls.py
# 管理后台 - 验证码
router.register(r"captcha", CaptchaViewSet, basename="captcha")前端实现
编写一个验证码Vue组件,主要功能包括:
[*]显示验证码:通过img标签展示验证码图片,点击可刷新
[*]用户输入:提供输入框供用户输入验证码
[*]数据存储:隐藏域存储验证码的hashkey
[*]接口调用:调用API获取验证码图片和验证用户输入
[*]验证功能:提供validateCaptcha方法供父组件调用验证
<template>
<input type="text" v-model="userInput" placeholder="请输入验证码"/>
<img :src="captchaImage" @click="refreshCaptcha"/>
<input type="hidden" v-model="captchaHashKey" />
</template>实现效果
可通过配置选项控制验证码是否开启,支持点击刷新验证码
点击查看完整代码
五、Base64 图片格式说明
在上面的实现中,我们使用了 Base64 格式来传输图片,这是一种将二进制数据编码为可打印字符的方法
[*]图片的 Base64 格式通常以 data:image/图片格式;base64, 开头
[*]示例:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...
[*]优势:可以直接嵌入到 HTML 或 JSON 中,减少 HTTP 请求次数
适用场景
[*]小型图片资源(如验证码、图标等)
[*]需要跨平台传输二进制数据的场景
您正在阅读的是《Django从入门到实战》专栏!关注不迷路~
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]