您的位置:首页 > 编程语言 > Go语言

Django框架登录加上验证码校验实现验证功能示例

2019-05-23 18:04 1601 查看

本文实例讲述了Django框架登录加上验证码校验实现验证功能。分享给大家供大家参考,具体如下:

验证码生成函数

pip install Pillow
# /verify_code
def verif_ycode(request):
#引入绘图模块
from PIL import Image, ImageDraw, ImageFont
#引入随机函数模块
import random
#定义变量,用于画面的背景色、宽、高
bgcolor = (random.randrange(20, 100), random.randrange(
20, 100), random.randrange(20, 100))
width = 100
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('楷体', 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], fill=fontcolor1)
draw.text((25, 2), rand_str[1], fill=fontcolor2)
draw.text((50, 2), rand_str[2], fill=fontcolor3)
draw.text((75, 2), rand_str[3], fill=fontcolor4)
#释放画笔
del draw
# 存入session,用于做进一步验证
request.session['verifycode'] = rand_str
#内存文件操作
import io
buf = io.BytesIO()
#将图片保存在内存中,文件类型为png
im.save(buf, 'png')
#将内存中的图片数据返回给客户端,MIME类型为图片png
return HttpResponse(buf.getvalue(), 'image/png')

login.html

html文件加上<img src="/verify_code" alt="">…当然这里还需要配置url,去urls.py里url(r'^verify_code$',views.verif_ycode),

login_check视图函数里加上验证码校验

首先拿到用户输入的验证码和def verif_ycode(request):函数保存在session中的验证码

# 获取验证码
vcode1 = request.POST.get('vcode')# 用户输入的验证码
vcode2 = request.session.get('verifycode')# 获取session中保存的验证码

判断是否一样,不一样的话就redirct('/login')跳转到登录页面

if vcode1 != vcode2:
return redirect('/login')
else:

否则向下运行

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: