django--验证码功能实现
首先建立验证码的视图函数
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--验证码功能实现的更多相关文章
- django验证码功能
1.目的 现在我们一般访问网页都需要输入验证码,比如博客园,有的甚至是通过手机验证码实时登录.这样做的目的主要还是为了防止其他人的恶意访问,比如爬虫,下面就来看看验证码是如何实现的 2.StringI ...
- 探索Django验证码功能的实现 - DjangoStarter项目模板里的封装
前言 依然是最近在做的这个项目,用Django做后端,App上提交信息的时候需要一个验证码来防止用户乱提交,正好我的「DjangoStarter」项目脚手架也有封装了验证码功能,不过我发现好像里面只是 ...
- Django学习笔记(17)——BBS+Blog项目开发(1)验证码功能的实现
本文主要学习验证码功能的实现,为了项目BBS+Blog项目打下基础. 为了防止机器人频繁登陆网站或者破坏分子恶意登陆,很多用户登录和注册系统都提供了图形验证码功能. 验证码(CAPTCHA)是“Com ...
- 使用JS来实现验证码功能
最近想为自己的Django博客添加验证码功能,本来想使用第三方库来实现的,不过考虑到添加第三方库对性能的影响,以及第三方库是否安全可靠的问题,还是用自己的代码来实现吧.反正用JS来实现验证码功能又不是 ...
- django 验证码实现
django验证码的使用: 验证码的作用:用于人机识别. 验证码 ###验证码: def code_str(request): from PIL import Image from PIL impor ...
- django 用户注册功能实现
增加views的类 class RegisterView(View): def get(self, request): return render(request, 'register.html', ...
- dd——留言板再加验证码功能
1.找到后台-核心-频道模型-自定义表单 2.然后点击增加新的自定义表单 diyid 这个,不管他,默认就好 自定义表单名称 这个的话,比如你要加个留言板还是投诉建议?写上去呗 数据表 这个不要碰, ...
- .Net Core 之 图形验证码 本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能。
本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能. 通过测试的系统: Windows 8.1 64bit Ubuntu Server 16.04 LTS 64 ...
- c#实现验证码功能
一.验证码简介 验证码功能一般是用于防止批量注册的,不少网站为了防止用户利用机器人自动注册.登录.灌水,都采用了验证码技术.所谓验证码,就是将一串随机产生的数字或字母或符号或文字,生成一幅图片, 图片 ...
- javaweb实现验证码功能
在javaweb的用户注册与登陆功能时,有时为了防止漏洞或者大量注册,可以使用验证码功能,下面是验证码的一个简单实现 验证码类 public class ValiImg extends HttpSer ...
随机推荐
- Node入门教程(10)第八章:Node 的事件处理
Node中大量运用了事件回调,所以Node对事件做了单独的封装.所有能触发事件的对象都是 EventEmitter 类的实例,所以上一篇我们提到的文件操作的可读流.可写流等都是继承了 EventEmi ...
- PCL中使用FLANN库(2)
接着上一篇的介绍继续 关于在使用readHeader函数读取点云数据头的类型的代码(Read a point cloud data header from a PCD file.) pcl::PCLP ...
- RTMP之后,SRT与QUIC
RTMP协议存在累计延迟与加密方面的问题,为适应互联网视频低延时,高质量的要求,以UDP为核心,具有创造性的SRT,QUIC等流媒体视频方式将成为新的选择 RTMP协议最初是由Macromedia为通 ...
- Java知多少(21)this关键字详解
this 关键字用来表示当前对象本身,或当前类的一个实例,通过 this 可以调用本对象的所有方法和属性.例如: public class Demo{ public int x = 10; publi ...
- Gsoap编译
gSOAP编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现,从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多.gSOAP支持大多数平台,包括嵌入式系统和小系统. 你首先 ...
- 原 TCP层的分段和IP层的分片之间的关系 & MTU和MSS之间的关系
首先说明:数据报的分段和分片确实发生,分段发生在传输层,分片发生在网络层.但是对于分段来说,这是经常发生在UDP传输层协议上的情况,对于传输层使用TCP协议的通道来说,这种事情很少发生. 1,MTU( ...
- Git之右键没有Git Bash Here的解决办法
1.Win+R 打开运行输入regedit 回车打开注册表 2.找到[HKEY_CLASSES_ROOT\Directory\Background]. 3.在[Background]下如果没有[she ...
- C# 窗口和程序的退出
Application.Exit(); // 通知所有消息泵必须终止,并且在处理了消息以后关闭所有应用程序窗口. // 由 .NET Compact Framework 支持. Form.Close( ...
- Spark排序之SortByKey
sortByKey函数作用于Key-Value形式的RDD,并对Key进行排序. package com.test.spark import org.apache.spark.{SparkConf, ...
- jmeter中split分隔字符
jmeter中自带了split函数,但是,注意但是,不能使用"-",","等等符合,否则会报错. 没办法,转投入beanshell的怀抱,使用split,发现& ...