django-simple-captcha 验证码插件介绍

安装SimpleCaptcha SimpleCaptcha是一个使用简单,基于.Net Standard 2.0的图形验证码模块。它的灵感来源于Edi.Wang的这篇文章https://edi.wang/post/2018/10/13/generate-captcha-code-aspnet-core,我将其中生成验证码的代码抽取出来进行封装得到了这个模块。下面介绍一下使用方式。 基本使用方式 安装SimpleCaptcha 在Nuget中搜索安装SimpleCaptcha 安装缓存模块 SimpleCaptcha依赖Micro 阅读详情

django-simple-captcha作为一款django的验证码插件,使用方法非常简单,能够快速应用到web应用中。
文档官网地址:django-simple-captcha

使用方法:

1.安装:

pip install  django-simple-captcha

2.项目settings.py及url配置:

生成的验证码类型,图片格式等配置都是通过在settings.py中添加若干关键字来指定的,如果不指定,则为默认值。

INSTALLED_APPS = [              #添加应用
    #其他应用...
	'captcha',
]

CAPTCHA_IMAGE_SIZE = (100,30)  #设置生成验证码图片的长和宽,单位为像素

CAPTCHA_OUTPUT_FORMAT = u'%(text_field)s %(image)s %(hidden_field)s' #设置输出的格式,该插件自动在模板中生成3个元素:一个验证码图片,一个验证码输入框、一个用于存放秘钥的隐藏输入框。可以在此根据需要调整其在模板中生成的先后顺序

CAPTCHA_FOREGROUND_COLOR = 'red'  #设置验证码图片前景色

CAPTCHA_BACKGROUND_COLOR = '#ffffff'  #设置验证码图片背景色

CAPTCHA_FONT_SIZE = '20'   #设置验证码图片中字体大小

CAPTCHA_FONT_PATH = 'fonts/Vera.ttf'   #设置字体样式,支持TTF等文件格式

CAPTCHA_LETTER_ROTATION = (-35,35)  #设置验证码中字母旋转的角度

CAPTCHA_NOISE_FUNCTIONS = ('captcha.helpers.noise_arcs','captcha.helpers.noise_dots',)  #是否添加干扰点和干扰线,当值为'captcha.helpers.noise_null'时,表示不添加干扰

CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.random_char_challenge' #设置验证码类型,其内置了三种验证码类型,还包括'captcha.helpers.math_challenge'(数字)和'captcha.helpers.word_challenge'(字典),除此之外,你还可以自己定义验证码生成函数

CAPTCHA_TIMEOUT = '5' #设置验证码的有效时间,单位为分钟

CAPTCHA_LENGTH = '4' #当验证码类型为字符型时,指定字母个数

添加url
该插件内置了4个模板需要添加

urlpatterns = [    #源码
    url(r'image/(?P<key>\w+)/$', views.captcha_image, name='captcha-image', kwargs={'scale': 1}),
    url(r'image/(?P<key>\w+)@2/$', views.captcha_image, name='captcha-image-2x', kwargs={'scale': 2}),
    url(r'audio/(?P<key>\w+).wav$', views.captcha_audio, name='captcha-audio'),
    url(r'refresh/$', views.captcha_refresh, name='captcha-refresh'),
]

直接在自己项目中导入即可

from django.conf.urls import url,include
urlpatterns = [
    #其他url...
	url(r'^captcha/',include('captcha.urls')),
]

不要忘了python manage.py migrate

3.添加至表单

from django import forms
from captcha.fields import CaptchaField

class CaptchaTestForm(forms.Form):
    myfield = AnyOtherField()
    captcha = CaptchaField()

或者

from django import forms
from captcha.fields import CaptchaField

class CaptchaTestModelForm(forms.ModelForm):
    captcha = CaptchaField()
    class Meta:
        model = MyModel

在CaptchaField()中可以添加错误信息,例如:

captcha = CaptchaField(error_messages={"invalid":u"验证码错误","required":u"请输入验证码"})

4.视图函数

表单的验证是自动的

def some_view(request):
    if request.POST:
        form = CaptchaTestForm(request.POST)

        # Validate the form: the captcha field will automatically
        # check the input
        if form.is_valid():
            human = True
    else:
        form = CaptchaTestForm()

    return render_to_response('template.html',locals())

5.前端

{{form.captcha}}
{{form.captcha.errors}}

生成表单控件结果

<input id="id_captcha_1" class="form-control user_captcha" placeholder="请输入验证码" autocomplete="off" autocapitalize="off" spellcheck="false" name="captcha_1" type="text" >
<img class="captcha" alt="captcha" src="/%2Fimage/e91228ab45df7338b59b64cb0eae1b60a48fd125/">
<input id="id_captcha_0" name="captcha_0" value="e91228ab45df7338b59b64cb0eae1b60a48fd125" type="hidden">

你也可以在前端手动添加这3个控件,其中验证码图片的url和隐藏输入框的value可以通过插件内置的CaptchaStore.generate_key() 和 captcha_image_url(hashkey)方法来生成,并在视图函数中传递给前端即可。

views.py  
from captcha.models import CaptchaStore  
from captcha.helpers import captcha_image_url  
hashkey = CaptchaStore.generate_key()  
image_url = captcha_image_url(hashkey)
<input id="id_captcha_1" class="form-control user_captcha" placeholder="请输入验证码" autocomplete="off" autocapitalize="off" spellcheck="false" name="captcha_1" type="text" >
<img class="captcha" alt="captcha" src="{{image_url}}">
<input id="id_captcha_0" name="captcha_0" value="{{hashkey}}" type="hidden">
{{form.captcha.errors}}

6.工作原理

该插件的工作原理是基于数据库查询的,其将generate_key()方法生成的验证码存储在CaptchaStore表单中,在前端获取用户的输入(response)以及秘钥(hashkey),然后基于这两者在数据库CaptchaStore表单中查询是否有匹配的数据,如果存在,则验证通过。

7.AJAX验证表单

知晓了其工作原理,除submit自动验证表单以外,我们就可以通过ajax来验证了
在前端传输用户的输入和秘钥给视图函数,并根据返回的状态,显示相应的反馈信息

$("#id_captcha_1").keyup(function(){    //验证码输入验证ajax
	var response=$('#id_captcha_1').val();
	var hashkey=$('#id_captcha_0').val();
	json_data={
		'response':response,
		'hashkey':hashkey
	}
	$.getJSON("/ajax_captcha",json_data,function(data){
		$("span.captcha_status").remove();
		if (data.status){
			$("#id_captcha_1").after('<span class="captcha_status">验证成功</span>');
		}else{
			$("#id_captcha_1").after('<span class="captcha_status">验证失败</span>');
		}
	});
});

视图函数中进行验证码输入验证,并返回结果

from django.http import JsonResponse
def ajax_captcha(request):  #验证码输入验证
	if request.is_ajax():
		result = CaptchaStore.objects.filter(response=request.GET.get('response'),hashkey=request.GET.get('hashkey'))
		if result:
			data={'status':1}
		else:
			data={'status':0}
		return JsonResponse(data)

设置url

from . import views
from django.conf.urls import url
urlpatterns = [
	#其他url...
	url(r'^ajax_captcha/',views.ajax_captcha,name='ajax_captcha'),
]

8.AJAX刷新验证码

当用户看不清验证码图片时,需要刷新获取新的验证码图片,刷新的视图函数已经在插件中内置,只需编写前端即可。

def captcha_refresh(request):   #内置的源码
    """  Return json with new captcha for ajax refresh request """
    if not request.is_ajax():
        raise Http404

    new_key = CaptchaStore.pick()
    to_json_response = {
        'key': new_key,
        'image_url': captcha_image_url(new_key),
        'audio_url': captcha_audio_url(new_key) if settings.CAPTCHA_FLITE_PATH else None
    }
return HttpResponse(json.dumps(to_json_response), content_type='application/json')
$("img.captcha").click(function(){   //更新验证码图片ajax
	$.getJSON("/captcha/refresh",function(data){
		$("img.captcha").attr("src",data.image_url);
		$("#id_captcha_0").attr("value",data.key);
	});
});

如果觉得这篇文章帮助了您,请打赏一个小红包鼓励作者继续创作哦!!!

在这里插入图片描述

振镜装好没反应?五步配置法从接线到出光排查指南 在激光打标与加工系统中,振镜作为光束偏转的核心执行器,其控制精度直接影响加工质量。振镜系统由控制卡、驱动器和振镜电机组成,通过模拟或数字信号实现光束的精确偏转。配置时需确保供电电压、信号线序与软件参数匹配,否则会出现无响应或乱画现象。正确配置振镜可提升打标精度与效率,广泛应用于激光打标、雕刻和焊接等场景。本文针对振镜装好没反应的常见问题,提供从供电接线到软件校正的五步排查方法,帮助用户快速定位故障。 阅读详情

相关推荐

simple_captcha:一个用Java制作的简单的验证码图像生成器!

简单验证码 Java制作的简单验证码图像生成器! 用法示例 import me.brennan.captcha.ImageGenerator ; import javax.imageio.ImageIO ; import java.io.FileOutputStream ; public class Test { public static void main ( String [] args ) throws Exception { var imageGenerator = new ImageGenerator (); var captcha = imageGenerator . generateImage(); System . out . println(captcha . getSolution()); var

Django中图形验证码(django-simple-captcha)

django-simple-captcha 在网站开发的登录页面中,经常会需要使用到图形验证码来验证。在Django中,django-simple-captcha库包提供了图形验证码的使用。 下面我们来讲讲如何使用django-simple-captcha包来图形验证,并且点击图片刷新验证码。 django-simple-captcha的安装 pip install django-sim...

谢公子的博客 9646

给Django Admin添加验证码和多次登录尝试限制的实现

Django自带的Admin很好用,但是放到生产环境总还差了点什么= = 看看admin的介绍: Django奉行Python的内置电池哲学。它自带了一系列在Web开发中用于解决常见问题或需求的额外的、可选工具。这些工具和插件,例如django.contrib.redirects都必须在settings中的INSTALLED_APPS处进行注册,有的还需要执行manage.py migrate命令,在数据库中创建一些数据表。 Admin站点是Django有别于其它Web框架最重要的一点,并且非常受欢迎,简直是出门旅游xxxx的必备。不管你是写个小demo还是做个大项目都用得上。admin(下文

Django使用django-simple-captcha详细步骤

前言 今天介绍一个django开源的图形验证码模块django-simple-captcha,利用它我们无需再手动书写验证码了,并且它还提供了不同类型的验证码(比如数字的算术运算),且使用方便(配置文件配置即可) 使用步骤 安装 django-simple-captcha pip install django-simple-captcha 安装依赖库 pillow pip install pillow 注意: 如果显示已经安装过pillow,但是运行Django却报错,大致如下 Modu

CurtainOfNight的博客 3176

告别卡顿!OBS Studio最佳录制参数设置指南(适合游戏/网课/会议场景)

本文提供OBS Studio录制参数优化指南,针对游戏、网课及会议三大场景,详细解析帧率、码率与编码器设置。重点推荐利用硬件编码器(如NVENC)实现游戏录制零卡顿,并分享清晰稳定的网课录制与长时间会议录制配置方案,助你告别视频卡顿与音画不同步问题。

e4f5g6h7的博客 1334

01-认识脑电信号及相关信号的预处理过程

脑电信号处理过程脑电实验为什么要预处理预处理方法降采样如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 脑电实验 本博客主要是记录基于脑电信号的情绪识别方法的研究...

脑机交流者的博客 7660

django-simple-captcha 验证码插件介绍 django-simple-captcha 使用 以及添加动态ajax刷新验证...

django-simple-captcha作为一款django的验证码插件,使用方法非常简单,能够快速应用到web应用中。 文档官网地址:django-simple-captcha 参考博客:http://blog.youkuaiyun.com/tanzuozhev/article/details/50458688?locationNum=2&fps=1 参考博客:http://blo...

weixin_30814319的博客 458

Isaac Sim仿真平台学习(2)系统架构

isaac sim系统架构

weixin_75067193的博客 2698

关于修改Django-simple-captcha(验证码插件)样式--使用心得)

关于修改Django-simple-captcha(验证码插件)样式--使用心得使用django-simple-captcha插件安装配置django-simple-captcha(简单描述)修改样式(重点) 使用django-simple-captcha插件 最近想要在django项目里面添加验证码登录功能,所以上网搜索了一番,结果搜索出两种实现方式。 一、使用pillow库直接做出验证码,然后...

weixin_41227756的博客 2762

VS2019+CAXACAD2023二次开发教程(一、环境搭建)

CAXACAD2023的二次开发相关文件和库都在的文件夹下。CAXACAD2023的默认开发环境是VS2019,如果是用VS2019的环境话,可以直接安装这个插件,安装好后就可以一键新建的项目,新建的项目会自动帮我们配置好所有的环境,并且生成必要的代码和初始的框架。(本来想用VS2022的,但配置环境太麻烦,用VS2022,增加一个环境变量是可以运行自带的例程的,但新建项目要配置的东西和环境太多,就放弃折腾了)

weixin_42968757的博客 4621

PyTorch实战(30)——使用TorchScript和ONNX导出通用PyTorch模型

在本节中,我们将深入探讨使用 TorchScript 导出 PyTorch 模型。通过序列化,TorchScript 使模型与 Python 生态系统独立,从而使得模型可以在其他环境中加载,例如基于 C++ 的环境。我们还跨越 Torch 框架与 Python 生态的边界,研究机器学习通用开放格式 ONNX,该技术能帮助我们将 PyTorch 训练的模型导出至非 PyTorch 甚至非 Python 环境。

盼小辉丶的博客 3526

【Django】Django验证码插件Django-simple-captcha自定义样式,以及通过ajax发送验证码数据

一、简单安装配置 1、安装django-simple-captcha pip install django-simple-captcha 2、将captcha 添加到setting.py文件中的installed_apps里面 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'd...

随波一落叶 2409

RK3399平台开发系列讲解(内核入门篇)1.1、通过sysfs清楚了解设备的系统状况

文章目录1、不敢高声语,恐惊天上人:sysfs目的2、窥一斑而知全豹:sysfs目录介绍3、千丝万缕:sysfs中要素的关系4、数据观星:sysfs中相关结构体 1、不敢高声语,恐惊天上人:sysfs目的 我们想通过sys下面的目录和文件清楚的了解跑Liunx系统的嵌入式设备的系统状况。 2、窥一斑而知全豹:sysfs目录介绍 sysfs把连接在系统上的设备和总线组织成为一个分级的文件,它们可以由用户空间存取,向用户空间导出内核的数据结构以及它们的属性。sysfs的一个目的就是展示设备驱动模型中各组件.

内核笔记 1万+

django-simple-captcha 验证码插件 和自己实现验证码的

第三方验证码插件的使用官方文档:http://django-simple-captcha.readthedocs.io/en/latest/usage.html#installationgithub:https://github.com/mbi/django-simple-captcha django-simple-captcha 一个很简单的django验证组件,实现原理是数据库中生成key和随机

Demo_3的博客 2001

PCL 建筑物点云立面和平面分割提取【2025最新版】

在建筑物点云中,立面点和平面点的法向量存在明显的差异,根据法向量在Z方向的分量设置相应得阈值即可实现立面点与平面点的分割。

点云侠的博客 1962

unitree-G1外接 USB 麦克风完整配置指南

首先,将type-c麦克风插入G1机器人的USB口后,记录下USB麦克风的卡号(card)和设备号(device),通常显示为 card 1: Device [USB Audio Device]

m0_47999117的博客 599

django-simple-captcha 使用 以及添加动态ajax刷新验证

django-simple-captcha 使用以及添加动态ajax刷新、验证django-simple-captcha是常用的添加验证码的package,但是使用起来会遇到一些问题,比如ajax动态刷新和验证的问题,官网并没有给出详细的说明,这里做个简单的介绍。本文代码使用python3.4, django1.8,其他版本同样可以参考django-simple-captcha 使用 安装 pip

自由 平等~忠诚 奉献 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

django-simple-captcha 验证码插件

官方文档:http://django-simple-captcha.readthedocs.io/en/latest/usage.html#installation github:https://github.com/mbi/django-simple-captcha 安装部署 版本:django 1.9 pip install django-simple-captcha==...

weixin_30326741的博客 82

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

django 验证码(django-simple-captcha)

django-simple-captcha    django验证码可以使用django-simple-captcha第三方插件,这个插件使用起来十分简单。 github传送门: http://django-simple-captcha.readthedocs.io/en/latest/usage.html1,安装     先安装:用pip源安装 pip install django-simp

l_vip的博客 2471

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

django入门6引入验证码插件 django-simple-captcha

Django的验证码插件 https://github.com/mbi/django-simple-captcha 安装 (mxonline) C:\Users\ws>pip install django-simple-captcha==0.4.6 添加到settings.py中 配置urls.py 创建数据表 manage.py@mxonline >...

reblue520的专栏 218

Django 验证码的使用 -django-simple-captcha使用方法

关于Django的验证码的问题,进行再次的追究,找到了第二种方法 简单的简介和使用方法。并且关于在这里出现的问题我会在下篇文章进行说明,因为我在安装和使用的过程中还是遇到了问题的。大概的步骤如下 一、简介 项目地址:http://code.google.com/p/django-simple-captcha/ 简介:是一个第三方django APP,用于为表单添加验证码图片 二、

麻球科技 1281

django 图片验证码与邮箱验证

一. 图片验证码 使用插件 django-simple-captcha 开源地址: https://github.com/mbi/django-simple-captcha 官方文档: http://django-simple-captcha.readthedocs.io/en/latest/usage.html#installation 安装: ...

Bob欧巴のblog 1454

django学习,captcha图形验证码的使用

很多网站在登录或者注册的时候都有验证码,让你去输入。 刚好有这么一款插件,可以满足这个功能 首先,先pip install django-simple-captcha 然后再setting里添加,如下 添加成功后迁移数据库。用那两句语句 然后添加urls,如图最下 然后去表单文件那里添加 captcha = CaptchaField(required=True...

weixin_30951743的博客 247

django admin 登陆快速添加验证码功能

1. 安装包 pip install django-multi-captcha-admin django-simple-captcha 2. setting.py INSTALLED_APPS = [ 'xxxxxxx', #系统内置的模块 '....', 'app01', 'multi_captcha_admin', ...

weixin_34309543的博客 988
上一篇: Centos 7环境下使用nginx和uwsgi部署多站(最简单的方法)
下一篇: django Paginator分页+Boostrap样式快速生成分页按钮
PAT-python-zjw
博客等级 码龄10年 381粉丝 408原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值