django 利用pillow 进行简单的设置验证码功能(python)
发表于:2024-10-23 作者:千家信息网编辑
千家信息网最后更新 2024年10月23日,1.导入模块 并定义一个验证状态from PIL import Image, ImageDraw, ImageFontfrom django.utils.six import BytesIOdef v
千家信息网最后更新 2024年10月23日django 利用pillow 进行简单的设置验证码功能(python)
1.导入模块 并定义一个验证状态
from PIL import Image, ImageDraw, ImageFontfrom django.utils.six import BytesIOdef verify_code(request): #引入随机函数模块 import random #定义变量,用于画面的背景色、宽、高 bgcolor = (random.randrange(20, 100), random.randrange( 20, 100), 255) width = 100 height = 25 #创建画面对象 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) #定义验证码的备选值 str1 = 'ABCD123EFGHIJK456LMNOPQRS789TUVWXYZ0' #随机选取4个值作为验证码 rand_str = '' for i in range(0, 4): rand_str += str1[random.randrange(0, len(str1))] #构造字体对象,ubuntu的字体路径为"/usr/share/fonts/truetype/freefont" font = ImageFont.truetype('FreeMono.ttf', 23) #构造字体颜色 fontcolor = (255, random.randrange(0, 255), random.randrange(0, 255)) #绘制4个字 draw.text((5, 2), rand_str[0], font=font, fill=fontcolor) draw.text((25, 2), rand_str[1], font=font, fill=fontcolor) draw.text((50, 2), rand_str[2], font=font, fill=fontcolor) draw.text((75, 2), rand_str[3], font=font, fill=fontcolor) #释放画笔 del draw #存入session,用于做进一步验证 request.session['verifycode'] = rand_str #内存文件操作 buf = BytesIO() #将图片保存在内存中,文件类型为png im.save(buf, 'png') #将内存中的图片数据返回给客户端,MIME类型为图片png return HttpResponse(buf.getvalue(), 'image/png')
3.在网页中直接放入img中
4.使用ajax 获取验证密码和账号
login
请输入验证码
记住密码
点击到获取cookies
在上面 ajax 中 向服务器发送了 账号密码 和 验证码
在验证函数中
yzm = request.POST.get('yum') # 获取传入的 验证码 vaue = request.session['verifycode'] # 生成图片的时候 把验证码存到了session 中 if yzm !=vaue: #如果不相等的话会返回 3 HTML ajax 会显示验证错误 return JsonResponse({'res':3})
成果图:
总结
以上所述是小编给大家介绍的django 利用pillow 进行简单的设置验证码功能(python),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
验证
图片
登陆
内存
函数
字体
密码
对象
画笔
成功
文件
模块
画面
类型
账号
帮助
输入
功能
出处
变量
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器与交换机连接
一台电脑拼接服务器ip
加解密服务器
钱拓网络技术
辰联天下互联网科技有限公司
杭州ns服务器代理
深圳软件开发者一般多少钱
网络安全入行岗位
cbm的数据库主题词检索
网络安全法有追溯期
arc怎么添加数据库
互联网科技股票排名
江苏医院网络安全运维招标
数据库有金额总计大写吗
软件开发行业的工作环境
河南项目软件开发要多少钱
怎样连接中心服务器
网络安全专业保研能换专业吗
软件开发人力外包方案
uki服务器
软件开发项目销售
软件开发哪种台式机好
软件开发的设计过程
破釜酒吧服务器能切换吗
论文我与网络安全123
小米移动互联网科技园位置
数据库的浏览检索功能
软件开发的多少钱
政府机关网络安全法
网络技术维护是什么工作