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