django验证码插件 --- django-simple-captcha
使用django-simple-captcha实现登录验证码:
第一步:安装pillow依赖
pip install pillow -i https://pypi.tuna.tsinghua.edu.cn/simple/
第二步:安装django-simple-captcha
pip install django-simple-captcha -i https://pypi.tuna.tsinghua.edu.cn/simple/
第三步:注册django-simple-captcha
INSTALLED_APPS = [
'captcha',
]
第四步:配置urls.py
urlpatterns = [
# 图片验证码 路由
path('captcha/', include('captcha.urls')),
]
第五步:数据库迁移
python manage.py makemigrations
python manage.py migrate
第六步:在settings.py中配置验证码的相关信息
#字母验证码
CAPTCHA_IMAGE_SIZE = (80, 45) # 设置 captcha 图片大小
CAPTCHA_LENGTH = 4 # 字符个数
CAPTCHA_TIMEOUT = 1 # 超时(minutes)
第七步:创建form表单
from django import forms
from captcha.fields import CaptchaField # 创建form表单
class LoginForm(forms.Form): '''
生成的captcha,包括三部分的内容:
1. 验证码的图片
2. 验证码的输入框
3. 验证码的答案【默认是隐藏的】
'''
captcha = CaptchaField()
第八步:定义视图函数views.py
# 处理验证码请求的视图函数 test
def test(request): # 如果是GET方法,则将form对象传递到页面中
# 传递的内容就是上面刚刚所说的三个部分的内容
if request.method == 'GET':
my_form = LoginForm()
return render(request, 'template.html', locals()) # 前端将验证码以POST方法提交过来后,进行校验
my_form = LoginForm(request.POST)
# 如果输入的验证码正确,则返回“通过”,反之,返回“不通过”
if my_form.is_valid():
return HttpResponse('通过')
else:
return HttpResponse('不通过')
第九步:模板HTML页面
<form action="" method="post">
<!-- my_form.captcha中包含了前面说的三个内容 -->
{{ my_form.captcha }}
<!-- 按钮需要自己添加 -->
<input type="submit">
</form>
渲染后的html页面如下:
--- 注:
(1)img为:验证码图片
(2)第二个input为:验证码输入框
(3)第一个input为:验证码答案【隐藏】

到此为止,就实现了基本的验证码功能,
但是,如果想要刷新验证码,就必须刷新整个页面,
所以,需要使用Ajax来进行验证码的刷新,
那如何操作呢?
其实,只需要给图片添加一个点击事件,当点击图片时,向后端发起一个请求,让后端的某一个函数来处理请求,然后返回新的验证码图片地址和验证码答案即可,
最后再把前端的图片地址src替换为新的地址,和答案的value替换为新的value就可以了。
那怎么获取新的图片地址和答案呢?如下:
# 刷新验证码,处理Ajax请求
def refreshCode(request): # 获取:新的验证码答案
captcha_answer = CaptchaStore.generate_key()
# 获取:验证码答案对应的验证码图片地址
img_url = captcha_image_url(captcha_answer)
<!-- 给验证码图片修改新的地址 -->
$("img").attr("src",img_url); <!-- 给验证码答案修改新的value值 -->
$("#id_captcha_0").attr("value",captcha_answer);
到此,大功告成!!!
补充:
上面在settings.py中配置的是字母验证码,除此之外,还有加减乘除验证码,如下:
#加减乘除验证码
CAPTCHA_OUTPUT_FORMAT = '%(image)s %(text_field)s %(hidden_field)s '
CAPTCHA_NOISE_FUNCTIONS = ('captcha.helpers.noise_null',
'captcha.helpers.noise_arcs', # 线
'captcha.helpers.noise_dots', # 点
)
CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.random_char_challenge'
CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.math_challenge'
CAPTCHA_TIMEOUT = 1
另外,还有一些其他的配置信息,例如:
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' #当验证码类型为字符型时,指定字母个数
django验证码插件 --- django-simple-captcha的更多相关文章
- Django Simple Captcha插件
正文开始 先看官方描述 1.安装 打开控制台,输入如下: pip install django-simple-captcha 2.把APP添加到Django项目进入自己的Django项目,在setti ...
- Django学习系列之captcha 验证码插件
安装部署 安装captcha pip3. install django-simple-captcha== settings.py中引入captcha INSTALLED_APPS = [ 'djang ...
- Django Simple Captcha的使用
Django Simple Captcha的使用 1.下载Django Simple Captcha django-simple-captcha官方文档地址 http://django-simple- ...
- django入门6引入验证码插件 django-simple-captcha
Django的验证码插件 https://github.com/mbi/django-simple-captcha 安装 (mxonline) C:\Users\ws>pip install ...
- django 验证码(django-simple-captcha)
django 验证码(django-simple-captcha) django-simple-captcha 官方文档(含基于modelForm的用法) https://django-simple ...
- 探索Django验证码功能的实现 - DjangoStarter项目模板里的封装
前言 依然是最近在做的这个项目,用Django做后端,App上提交信息的时候需要一个验证码来防止用户乱提交,正好我的「DjangoStarter」项目脚手架也有封装了验证码功能,不过我发现好像里面只是 ...
- django验证码django-simple-captha
搭建网站很经常要用到验证码,django中就有这样的中间件django-simple-captha githup地址https://github.com/mbi/django-simple-captc ...
- django 验证码
1.django 缓存设置 django的六种缓存(mysql+redis) :https://www.cnblogs.com/xiaonq/p/7978402.html#i6 1.1 安装Djang ...
- django验证码模块django-simple-captcha的使用介绍
django-simple-captcha是django验证码模块,非常方便易用. 1.环境的准备: 在django项目环境中安装:pip install django-simple-captcha ...
- django 验证码实现
django验证码的使用: 验证码的作用:用于人机识别. 验证码 ###验证码: def code_str(request): from PIL import Image from PIL impor ...
随机推荐
- Android开发 Error:The number of method references in a .dex file cannot exceed 64K.Android开发 Error:The number of method references in a .dex file cannot exceed 64K
前言 错误起因: 在Android系统中,一个App的所有代码都在一个Dex文件里面. Dex是一个类似Jar的存储了多有Java编译字节码的归档文件. 因为Android系统使用Dalvik虚拟机, ...
- ASP.NET CORE 框架揭秘读书笔记系列——ASP.NET应用程序(二)
一.ASP.NET 应用 一个ASP.NET CORE 应用构建在ASP.NET CORE 框架之上,ASP.NET CORE框架利用一个消息处理管道完成对HTTP请求的监听.接收.处理和最终的响应. ...
- 力扣467(java)-环绕字符串中唯一的子字符串(中等)
题目: 把字符串 s 看作是 "abcdefghijklmnopqrstuvwxyz" 的无限环绕字符串,所以 s 看起来是这样的: "...zabcdefghijklm ...
- 转载 | 基于函数计算自定义运行时快速部署一个 springboot 项目
简介: 本文转自函数计算征集令优秀征文,活动火热进行中,欢迎大家报名参加! 什么是函数计算? 函数计算是事件驱动的全托管计算服务.使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码.函 ...
- 当 Knative 遇见 WebAssembly
简介: Knative 可以支持各种容器化的运行时环境,我们今天来探索一下利用 WebAssembly 技术作为一个新的 Serverless 运行时. 作者:易立 Knative 是在 Kubern ...
- K8s 网关选型初判:Nginx 还是 Envoy?
简介: 本文将从性能和成本.可靠性.安全性 3 方面,对两大开源实现进行比对,希望对正在做 K8s 网关选型的企业有所借鉴. 作者:张添翼(澄潭) 为了避免混淆,我们先对一些关键定义做一些厘清: 传统 ...
- OpenKruise v1.0:云原生应用自动化达到新的高峰
简介:OpenKruise 是针对 Kubernetes 的增强能力套件,聚焦于云原生应用的部署.升级.运维.稳定性防护等领域. 云原生应用自动化管理套件.CNCF Sandbox 项目 -- Op ...
- [GPT] 提高个人网站的访问量的 30 种详细方式
内容优化:提高网站的质量和价值,让用户喜欢并分享你的内容. SEO优化:通过关键词优化.网站结构优化等方式,提高搜索引擎排名. 社交媒体:在社交媒体上分享你的内容,吸引更多人来访问你的网站. 广告投放 ...
- RT-Thead的启动流程
一.RT-Thread启动流程 由于RT-Thread文档中心已经将得很详细了,这里我就不过多描述,有需要的可以看RT-Thread 文档中心,启动流程如下图所示: 从图中可以看出RT-Thread是 ...
- 【动画进阶】巧用 CSS/SVG 实现复杂线条光效动画
最近,群里在讨论一个很有意思的线条动画效果,效果大致如下: 简单而言,就是线条沿着不规则路径的行进动画,其中的线条动画可以理解为是特殊的光效. 本文,我们将一起探索,看看在不使用 JavaScript ...