django 验证码识别

django 验证码生成以及登录功能的实现

我们在项目中的views.py中来写函数,
代码如下:

def verifcode(request):
#引用绘画模块
from PIL import Image,ImageDraw,ImageFont
  #引用随机函数模块
 import random

 #定义变量,用于画面的背景色、宽、高
 bgcolor = (random.randrange(20,100),random.randrange(20,100),random.randrange(
     20,100))
 width  = 110
 height = 50

 #创建画面对象
 im   = Image.new('RGB',(width,height),bgcolor)

 #创建画笔对象
 draw = ImageDraw.Draw(im)

 #调用画笔的point()函数绘制噪点
 for i in range(0,100):
       xy   = (random.randrange(0,width),random.randrange(0,height))
       fill = (random.randrange(0,255),255,random.randrange(0,255))
       draw.point(xy,fill=fill)

 #定义验证码的备选项
 str = '1234567890QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm'

 #随机选取4个值作为验证码
 rand_str = ''
 for i in range(0,4):
     rand_str += str[random.randrange(0,len(str))]

 #构造字体对象
 font = ImageFont.truetype(r'C:\Windows\Fonts\AdobeFanHeitiStd-Bold.otf',40)

 #构造字体颜色(四个不同的颜色)
 fontcolor1 = (255,random.randrange(0,255),random.randrange(0,255))
 fontcolor2 = (255, random.randrange(0, 255), random.randrange(0, 255))
 fontcolor3 = (255, random.randrange(0, 255), random.randrange(0, 255))
 fontcolor4 = (255, random.randrange(0, 255), random.randrange(0, 255))

 #绘制4个字
 draw.text((5,  2), rand_str[0], font=font, fill=fontcolor1)
 draw.text((25, 2), rand_str[1], font=font, fill=fontcolor2)
 draw.text((50, 2), rand_str[2], font=font, fill=fontcolor3)
 draw.text((75, 2), rand_str[3], font=font, fill=fontcolor4)

 #释放画笔
 del draw

 #存入session,用于进一步验证
 request.session['verifycode'] = rand_str

 #内存文件操作
 import io
 buf = io.BytesIO()

 #将图片保存在内存中
 im.save(buf,'png')

 #将内存中的图片数据返回给客户端,MIME类型为图片png
 return  HttpResponse(buf.getvalue(),'image/png')

在urls.py中配置路由
代码如下:

from django.conf.urls import url
from . import views

urlpatterns = [
url(r’^verifcode/$’,views.verifcode),
]

结果如图:
在这里插入图片描述
验证码生成后我们要实现的就是登录功能
我们在templates中的 项目下新建一个html文件,
主要目的是新建登录并将上面的验证码图片路径迁入页面中

(界面简洁功能实现就好,(●’◡’●)嘻嘻嘻)
我们继续在views.py文件中新建函数

def verifycodefile(request):
return render(request,‘myApp/verifycodefile.html’)
在urls.py文件中配置路由
代码如下:
from django.conf.urls import url
from . import views

urlpatterns = [

    url(r'^verifcode/$',views.verifcode),

    url(r'^verifycodefile/$',views.verifycodefile),

]
结果如图:
在这里插入图片描述
结束啦~O(∩_∩)O
仅供参考,(ง •_•)ง✊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值