一、引言

官方文档: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. 边缘计算架构_Openshift为边缘计算提供三节点架构部署
  2. 灵活越障、花样空翻,腾讯轮腿式机器人亮相机器人顶会 ICRA
  3. 每天定时备份mysql数据库任务
  4. 鸟哥的Linux私房菜(服务器)- 第四章、连上 Internet
  5. 使用OpenCV调用Caffe-SSD训练好的模型
  6. html文字自动上翻,jQuery超酷文字随机翻转变换动画特效
  7. 成本管理4个过程及相关重点
  8. KVM安装、镜像创建(一)
  9. android 键盘 自动消失,android 软键盘 回到键 消失事件 监听
  10. 跑了10千米,再一次伤了膝盖
  11. linux的qt5.5,Qt 5.5 正式发布,完全支持 Windows 10
  12. CSS animation 与 transition 有何区别?
  13. 亲密关系沟通-【情感勒索】建立良性沟通
  14. 如何学web前端-几款前端小游戏推荐
  15. 制作自己的字体图标库
  16. CentOS Linux 续存,在新的 AlmaLinux 9 中发光发热
  17. GAT - Graph Attention Network 图注意力网络 ICLR 2018
  18. 注册163VIP邮箱如何登陆?我邮件注册的163VIP邮箱不知道怎么登陆
  19. 工信部行业划分标准 《关于印发中小企业划型标准规定的通知(工信部联企业〔2011〕300号)》
  20. javaweb失物招领网站源码

热门文章

  1. 自动播出服务器,自建直播服务器的一点感受
  2. 获取微信html代码,微信小程序云开发js抓取网页内容
  3. python光学仿真模块_光学现象的Python实现(Understanding optics with Python)
  4. 苹果遭荷兰监管机构罚款,累计约1.8亿RMB
  5. Outlook邮箱下载的文件在哪里看?
  6. 毕业季相册PSD模板中学校园合影留念纪念同学录毕业照相片书素材
  7. 我们前端跟后端是怎么合作的
  8. 历届JOLT图书奖整理
  9. Vs2005报表设计器XML分析总结 作者:长江支流
  10. 用了BERT就是香,AI评分还能给出评语,从此英文写作不再是噩梦!