django-simple-captcha 验证码模块的小结
一、引言
官方文档:django-simple-captcha
本博客谈不上深度,算是笔记和一些探索经验。主要是遇到了一个实际问题,在使用django-simple-captcha模块的时候,官网推荐使用django表单的形式去添加,django表单确实很方便,但是对于简单项目或者只需要django-simple-captcha模块的时候也没有太多的文档具体说明,这篇博客就说一下怎么单独使用django-simple-captcha模块。
目标:实现手动创建验证码和前端显示,后台手动验证,ajax请求。
二、流程
1)安装 django-simple-captcha
pip install django-simple-captcha
2)注册captcha
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','captcha',
]
也可以个性化定制,在 settings.py中添加如下代码,详情参考官方文档:
# 设置 captcha 图片大小
CAPTCHA_IMAGE_SIZE = (80, 45)
# 字符个数
CAPTCHA_LENGTH = 4
# 超时(minutes)
CAPTCHA_TIMEOUT = 1
3)执行数据迁移,生成数据表 captcha_captchastore
python manage.py migrate
4)添加路由
urlpatterns = [path('admin/', admin.site.urls),# 图片验证码 路由path('captcha/', include('captcha.urls'))
]
再添加ajax刷新请求的二级路由,ajxa请求地址: captcha/refresh_captcha/
path('refresh_captcha/', views.refresh_captcha), # 刷新验证码,ajax
本次django使用的是2.1.1版本,路由的写法可能有点不同,原理一样。
5)在views.py中添加代码,因为在我的项目中,设计到代码的复用问题,所以我创建验证码和验证单独做成函数
# 验证码需要导入的模块
from captcha.models import CaptchaStore
from captcha.helpers import captcha_image_url# 创建验证码
def captcha():# 验证码,第一次请求hashkey = CaptchaStore.generate_key()image_url = captcha_image_url(hashkey)captcha = {'hashkey': hashkey, 'image_url': image_url}return captcha# 验证验证码
def jarge_captcha(captchaStr, captchaHashkey):if captchaStr and captchaHashkey:try:# 获取根据hashkey获取数据库中的response值get_captcha = CaptchaStore.objects.get(hashkey=captchaHashkey) # 如果验证码匹配if get_captcha.response == captchaStr.lower(): return Trueexcept:return Falseelse:return False
6)ajax请求,settings.py 文件中
# 刷新验证码
# path: /ims/refresh_captcha
import json
def refresh_captcha(request):return HttpResponse(json.dumps(captcha()), content_type='application/json')
前端页面:
<div class="form-group"><label for="id_password">验证码</label><div id="captcha_div"><input type="text" name='captcha' class="form-control" placeholder="Captcha" required style="width: 55%;display: inline-block;margin-right: 8%;"><a href="#" class="captcha"><img src="{{captcha.image_url}}" alt="点击换一张" id="id_captcha"></a><input value="{{captcha.hashkey}}" name="hashkey" type="hidden" id="id_captcha_0"></div>
</div>
前端页面显示图片采用 src="{{captcha.image_url}}"来获取:
<script><!-- 动态刷新验证码js -->$(document).ready(function(){$('.captcha').click(function () {$.getJSON("/ims/refresh_captcha/", function (result) {$('#id_captcha').attr('src', result['image_url']);$('#id_captcha_0').val(result['hashkey'])});});});
</script>
三、原理
django-simple-captcha 验证码模块的小结相关推荐
- Django学习15 -- 验证码
1. 验证码 验证码(CAPTCHA,Completely Automated Public Turing test to tell Computers and Humans Apart),全自动区分 ...
- django captcha 验证码插件
一.前提 在我们访问网站,通常在注册或登录的时候需要舒服验证码,现在来说说django中的验证码第三方插件captcha. 二.安装 1.pip安装(这里要注意一点版本) pip install dj ...
- 【django】图形验证码接口设计、后端逻辑、前端逻辑【15】
一.原理图 将后端⽣成的图⽚验证码存储在redis数据库2号库 结构:{'img_uuid':'0594'} 二.创建验证码⼦应⽤ python ../../manage.py startapp ve ...
- Django 创建随机验证码
Django上实现登录验证码有两种方式(我自己能实现的) 第一种调用captcha 验证码插件 安装:pycharm 中直接搜索django-simple-captcha,或者pip3 install ...
- Django auth用户认证模块
Django auth用户认证模块 1.Django auth用户认证 2.Django auth用户模型 3.自定义auth用户模型 4.数据迁移 5.web开发一个应用 5.1 定义路由 1.一级 ...
- Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块
这是一篇系列博文,我将使用Abp.Zero搭建一套集成手机号免密登录验证与号码绑定功能的用户系统: Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块 Abp.Zero 手机号 ...
- Django的项目---管理员模块(中)_08【可读性更好版本】
(0)摘要 # 课程链接: 全新 django3 入门到项目实战(零基础学django.项目开发实践.大学毕业设计均可用)_哔哩哔哩_bilibili # 课程覆盖: 管理员模块_(4-7 ~~~ 4 ...
- uni-captcha验证码模块
使用uni-captcha快速的搭建验证码模块 废话不说,开始 创建项目 创建一个uni-app云开发项目 需要创建一个云服务空间 https://unicloud.dcloud.net.cn/ 创建 ...
- com.jhlabs:imaging:jar:01012005 所在仓库+captcha验证码maven依赖
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. <repositories> <repository> ...
最新文章
- [ME]不知道第几次学c语言,仍觉得水深莫测
- Ogre貌似开始推荐MYGUI了~~
- 10 个经典的 Java 集合面试题,看你能否答得上来?
- Basic Level 1023. 组个最小数 (20)
- 在CentOS下安装WebBench进行web 性能测试
- linux 信号处理实验,linux下信号处理
- ajax请求url 绝对路径与相对路径
- Matlab与C/C++/Java的一些区别
- 适用于Java开发人员的Elasticsearch:Elasticsearch生态系统
- window环境搭建go语言运行环境
- 《C++游戏开发》笔记十一 平滑动画:不再颤抖的小雪花
- Liferay的架构:缓存(第一部分)
- 面向对象-类与对象、关键字、异常使用
- linux巡检 python_LINUX服务器批量巡检的PYTHON脚本
- 快速解决Ubuntu无法访问Windows分区的问题
- kong翻译_最全的中国姓氏英文说法,你知道自己的姓氏怎么翻译吗?
- 计算机怎么不读u盘,老司机告诉你电脑不读U盘的解决方法
- 原来早就被安排了,旅行社用机器学习给你推个性化定制游
- Excel 公式结果为0时不显示
- 冒泡法(基本原理和方法)(c语言篇)
热门文章
- i米音标(赖世雄音标学习)——连音
- [附源码]计算机毕业设计JAVA茶园文化交流平台
- 抖音最近很火的QQ在线价值评估网站源码(qq价值在线评估)
- 高通Android平台下zoom4X实验原理分析
- Hutool 数字工具-NumberUtil使用(加减乘除,保留小数,格式化数字,是否为数字,随机数,整数列表,阶乘,平方根,最大公约数和最小公倍数,进制转换,比较大小,去除多余的0)
- Python制作一系列倒计时器,倒计时结束播放音乐
- ClickHouse之DBA运维宝典
- python京东抢购 github_11月份GitHub上最热门的Python开源项目
- C#打印条码的几种方式
- 做了几年的网工也未必了解VLAN和VXLAN的区别,今天我来告诉你!