首先建立验证码的视图函数
1需要安装pillow库

#导入绘图库
from PIL import ImageDraw
#导入绘图字体库
from PIL import ImageFont
#导入图片库
from PIL import Image
#导入io库
import io
#导入随机库
import random

1,定义验证码图片

#定义随机颜色方法
def get_random_color(): R = random.randrange(255)
G = random.randrange(255)
B = random.randrange(255) return (R,G,B) #定义随机验证码
def test_captcha(request):
#定义背景颜色
bg_color = get_random_color()
#定义画布大小 宽,高
img_size = (150,80)
#定义画笔 颜色种类,画布,背景颜色
image = Image.new("RGB",img_size,bg_color)
#定义画笔对象 图片对象,颜色类型
draw = ImageDraw.Draw(image,'RGB')
#定义随机字符
source = '0123456789asdfghjkl'
#定义四个字符
#定义好容器,用来接收随机字符串
code_str = ''
for i in range(4):
#获取随机颜色 字体颜色
text_color = get_random_color()
#获取随机字符串
tmp_num = random.randrange(len(source))
#获取字符集
random_str = source[tmp_num]
#将随机生成的字符串添加到容器中
code_str += random_str
#将字符画到画布上 坐标,字符串,字符串颜色,字体
#导入系统真实字体,字号
my_font = ImageFont.truetype("c:\\windows\\Fonts\\arial.ttf",20)
draw.text((10+30*i,20),random_str,text_color,font=my_font)
#使用io获取一个缓存区
buf = io.BytesIO()
#将图片保存到缓存区
image.save(buf,'png') #将随机码存储到session中
request.session['code'] = code_str #第二个参数声明头部信息
return HttpResponse(buf.getvalue(),'image/png')

2前端定义验证码图片和输入输入验证码

{# 利用clcik时间来刷新验证码 #}{# 通过样式来改变悬停时的图标 #}
<img style="cursor:pointer;" src="/captcha" onclick='this.src=this.src+"?"+Math.random()' />
<input name='code' type="text" />

3.定义验证码路由,并在登录时根据前端name 获取用户输入的验证码与存入session的验证码比对实现其功能

django--验证码功能实现的更多相关文章

  1. django验证码功能

    1.目的 现在我们一般访问网页都需要输入验证码,比如博客园,有的甚至是通过手机验证码实时登录.这样做的目的主要还是为了防止其他人的恶意访问,比如爬虫,下面就来看看验证码是如何实现的 2.StringI ...

  2. 探索Django验证码功能的实现 - DjangoStarter项目模板里的封装

    前言 依然是最近在做的这个项目,用Django做后端,App上提交信息的时候需要一个验证码来防止用户乱提交,正好我的「DjangoStarter」项目脚手架也有封装了验证码功能,不过我发现好像里面只是 ...

  3. Django学习笔记(17)——BBS+Blog项目开发(1)验证码功能的实现

    本文主要学习验证码功能的实现,为了项目BBS+Blog项目打下基础. 为了防止机器人频繁登陆网站或者破坏分子恶意登陆,很多用户登录和注册系统都提供了图形验证码功能. 验证码(CAPTCHA)是“Com ...

  4. 使用JS来实现验证码功能

    最近想为自己的Django博客添加验证码功能,本来想使用第三方库来实现的,不过考虑到添加第三方库对性能的影响,以及第三方库是否安全可靠的问题,还是用自己的代码来实现吧.反正用JS来实现验证码功能又不是 ...

  5. django 验证码实现

    django验证码的使用: 验证码的作用:用于人机识别. 验证码 ###验证码: def code_str(request): from PIL import Image from PIL impor ...

  6. django 用户注册功能实现

    增加views的类 class RegisterView(View): def get(self, request): return render(request, 'register.html', ...

  7. dd——留言板再加验证码功能

    1.找到后台-核心-频道模型-自定义表单 2.然后点击增加新的自定义表单 diyid 这个,不管他,默认就好 自定义表单名称 这个的话,比如你要加个留言板还是投诉建议?写上去呗 数据表  这个不要碰, ...

  8. .Net Core 之 图形验证码 本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能。

    本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能. 通过测试的系统: Windows 8.1 64bit Ubuntu Server 16.04 LTS 64 ...

  9. c#实现验证码功能

    一.验证码简介 验证码功能一般是用于防止批量注册的,不少网站为了防止用户利用机器人自动注册.登录.灌水,都采用了验证码技术.所谓验证码,就是将一串随机产生的数字或字母或符号或文字,生成一幅图片, 图片 ...

  10. javaweb实现验证码功能

    在javaweb的用户注册与登陆功能时,有时为了防止漏洞或者大量注册,可以使用验证码功能,下面是验证码的一个简单实现 验证码类 public class ValiImg extends HttpSer ...

随机推荐

  1. Node入门教程(10)第八章:Node 的事件处理

    Node中大量运用了事件回调,所以Node对事件做了单独的封装.所有能触发事件的对象都是 EventEmitter 类的实例,所以上一篇我们提到的文件操作的可读流.可写流等都是继承了 EventEmi ...

  2. PCL中使用FLANN库(2)

    接着上一篇的介绍继续 关于在使用readHeader函数读取点云数据头的类型的代码(Read a point cloud data header from a PCD file.) pcl::PCLP ...

  3. RTMP之后,SRT与QUIC

    RTMP协议存在累计延迟与加密方面的问题,为适应互联网视频低延时,高质量的要求,以UDP为核心,具有创造性的SRT,QUIC等流媒体视频方式将成为新的选择 RTMP协议最初是由Macromedia为通 ...

  4. Java知多少(21)this关键字详解

    this 关键字用来表示当前对象本身,或当前类的一个实例,通过 this 可以调用本对象的所有方法和属性.例如: public class Demo{ public int x = 10; publi ...

  5. Gsoap编译

    gSOAP编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现,从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多.gSOAP支持大多数平台,包括嵌入式系统和小系统. 你首先 ...

  6. 原 TCP层的分段和IP层的分片之间的关系 & MTU和MSS之间的关系

    首先说明:数据报的分段和分片确实发生,分段发生在传输层,分片发生在网络层.但是对于分段来说,这是经常发生在UDP传输层协议上的情况,对于传输层使用TCP协议的通道来说,这种事情很少发生. 1,MTU( ...

  7. Git之右键没有Git Bash Here的解决办法

    1.Win+R 打开运行输入regedit 回车打开注册表 2.找到[HKEY_CLASSES_ROOT\Directory\Background]. 3.在[Background]下如果没有[she ...

  8. C# 窗口和程序的退出

    Application.Exit(); // 通知所有消息泵必须终止,并且在处理了消息以后关闭所有应用程序窗口. // 由 .NET Compact Framework 支持. Form.Close( ...

  9. Spark排序之SortByKey

    sortByKey函数作用于Key-Value形式的RDD,并对Key进行排序. package com.test.spark import org.apache.spark.{SparkConf, ...

  10. jmeter中split分隔字符

    jmeter中自带了split函数,但是,注意但是,不能使用"-",","等等符合,否则会报错. 没办法,转投入beanshell的怀抱,使用split,发现& ...