一、引言

官方文档: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 验证码模块的小结相关推荐

  1. Django学习15 -- 验证码

    1. 验证码 验证码(CAPTCHA,Completely Automated Public Turing test to tell Computers and Humans Apart),全自动区分 ...

  2. django captcha 验证码插件

    一.前提 在我们访问网站,通常在注册或登录的时候需要舒服验证码,现在来说说django中的验证码第三方插件captcha. 二.安装 1.pip安装(这里要注意一点版本) pip install dj ...

  3. 【django】图形验证码接口设计、后端逻辑、前端逻辑【15】

    一.原理图 将后端⽣成的图⽚验证码存储在redis数据库2号库 结构:{'img_uuid':'0594'} 二.创建验证码⼦应⽤ python ../../manage.py startapp ve ...

  4. Django 创建随机验证码

    Django上实现登录验证码有两种方式(我自己能实现的) 第一种调用captcha 验证码插件 安装:pycharm 中直接搜索django-simple-captcha,或者pip3 install ...

  5. Django auth用户认证模块

    Django auth用户认证模块 1.Django auth用户认证 2.Django auth用户模型 3.自定义auth用户模型 4.数据迁移 5.web开发一个应用 5.1 定义路由 1.一级 ...

  6. Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块

    这是一篇系列博文,我将使用Abp.Zero搭建一套集成手机号免密登录验证与号码绑定功能的用户系统: Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块 Abp.Zero 手机号 ...

  7. Django的项目---管理员模块(中)_08【可读性更好版本】

    (0)摘要 # 课程链接: 全新 django3 入门到项目实战(零基础学django.项目开发实践.大学毕业设计均可用)_哔哩哔哩_bilibili # 课程覆盖: 管理员模块_(4-7 ~~~ 4 ...

  8. uni-captcha验证码模块

    使用uni-captcha快速的搭建验证码模块 废话不说,开始 创建项目 创建一个uni-app云开发项目 需要创建一个云服务空间 https://unicloud.dcloud.net.cn/ 创建 ...

  9. com.jhlabs:imaging:jar:01012005 所在仓库+captcha验证码maven依赖

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. <repositories>      <repository>       ...

最新文章

  1. [ME]不知道第几次学c语言,仍觉得水深莫测
  2. Ogre貌似开始推荐MYGUI了~~
  3. 10 个经典的 Java 集合面试题,看你能否答得上来?
  4. Basic Level 1023. 组个最小数 (20)
  5. 在CentOS下安装WebBench进行web 性能测试
  6. linux 信号处理实验,linux下信号处理
  7. ajax请求url 绝对路径与相对路径
  8. Matlab与C/C++/Java的一些区别
  9. 适用于Java开发人员的Elasticsearch:Elasticsearch生态系统
  10. window环境搭建go语言运行环境
  11. 《C++游戏开发》笔记十一 平滑动画:不再颤抖的小雪花
  12. Liferay的架构:缓存(第一部分)
  13. 面向对象-类与对象、关键字、异常使用
  14. linux巡检 python_LINUX服务器批量巡检的PYTHON脚本
  15. 快速解决Ubuntu无法访问Windows分区的问题
  16. kong翻译_最全的中国姓氏英文说法,你知道自己的姓氏怎么翻译吗?
  17. 计算机怎么不读u盘,老司机告诉你电脑不读U盘的解决方法
  18. 原来早就被安排了,旅行社用机器学习给你推个性化定制游
  19. Excel 公式结果为0时不显示
  20. 冒泡法(基本原理和方法)(c语言篇)

热门文章

  1. i米音标(赖世雄音标学习)——连音
  2. [附源码]计算机毕业设计JAVA茶园文化交流平台
  3. 抖音最近很火的QQ在线价值评估网站源码(qq价值在线评估)
  4. 高通Android平台下zoom4X实验原理分析
  5. Hutool 数字工具-NumberUtil使用(加减乘除,保留小数,格式化数字,是否为数字,随机数,整数列表,阶乘,平方根,最大公约数和最小公倍数,进制转换,比较大小,去除多余的0)
  6. Python制作一系列倒计时器,倒计时结束播放音乐
  7. ClickHouse之DBA运维宝典
  8. python京东抢购 github_11月份GitHub上最热门的Python开源项目
  9. C#打印条码的几种方式
  10. 做了几年的网工也未必了解VLAN和VXLAN的区别,今天我来告诉你!