Django实现随机图形验证码的示例


Posted in Python onOctober 15, 2020

实现效果:点击右边图片验证码会变

Django实现随机图形验证码的示例

前端代码:

<div class="container">
 <div class="row">
  <div class="col-md-6">
    <label for="yzm_id">验证码:</label>
    <input type="text" class="form-control" id="yzm_id" placeholder="" name="yzm">
   </div>
  <div class="col-md-6">
    <img id='yzm_img_id' src="/yzm/" alt="" style="width: 260px;height: 40px">
  </div>
  </div>
 <div>

后端代码:

from PIL import Image,ImageDraw,ImageFont
from io import BytesIO,StringIO
#色彩的设置为(*,*,*),所以随机返回三个数
def r_num(number):
 #number为2指的是背景颜色,把背景颜色和字体颜色分开,不然当颜色一样时,不容易看到
 if number==2:
  return random.randint(0,128),random.randint(0,128),random.randint(0,128)
 #number==1指的是字体颜色,字体颜色深一些比较养眼
 if number == 1:
  return random.randint(128, 255), random.randint(128, 255), random.randint(128, 255)
def yzm(request):
 #创建一个Image对象,‘RGB'是颜色的模式。第二个参数是验证码的大小。第三个参数是三个随机数,当然也用英语单词指定颜色,比如red,这里为了随机性选择了用三个数字
 yzm_img=Image.new("RGB",(260,40),r_num(1))
 #为yzm_img对象创建一个画笔
 draw=ImageDraw.Draw(yzm_img)
 #指定字体的格式,ttf文件自己在网上下载,放入static文件夹中,40指的是字体的大小
 font=ImageFont.truetype('static/1.ttf',40)
 #存放验证码
 code=''
 #循环5次,所以验证码是5位
 for i in range(5):
  #随机0到9的数字
  random_num=str(random.randint(0,9))
  #随机65到90的数字,chr是把数字对比ASCLL码表转为字母。65到90是大写字母
  random_up=str(chr(random.randint(65,90)))
  #同上,随机小写字母
  random_low=str(chr(random.randint(97,122)))
#从三个字符中随机选取出一个  
 random_code=random.choice([random_num,random_up,random_low])
  #把字符写入图片。第一个参数(x,y),坐标,如果坐标位置写死,那么将会全部挤到一起,第二个参数,指定写入的字符。第三参数指定字符的格式
  draw.text((45*i,-5),random_code,r_num(2),font)
  code+=random_code
 io_obj=BytesIO()
 #把图片存放到内存空间中
 yzm_img.save(io_obj,'png')
 #给session中添加验证码
 request.session['code']=code
 #返回二进制数据
 return HttpResponse(io_obj.getvalue())

现在刷新就可以刷新验证码了

还差点击验证码就能更换验证码

前端脚本代码:

这里这么写是因为只要在地址后面加上字符,那么就刷新图片

$('#yzm_img_id').click(function () {
  var path2 = $(this).attr('src');
  $(this).attr('src', path2 += '?')
 });

以上就是Django实现随机图形验证码的示例的详细内容,更多关于Django 图形验证码的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python3实现的腾讯微博自动发帖小工具
Nov 11 Python
常用python数据类型转换函数总结
Mar 11 Python
利用Python绘制数据的瀑布图的教程
Apr 07 Python
python 实时遍历日志文件
Apr 12 Python
Python中的错误和异常处理简单操作示例【try-except用法】
Jul 25 Python
python2.7安装图文教程
Mar 13 Python
Python Collatz序列实现过程解析
Oct 12 Python
Python 删除List元素的三种方法remove、pop、del
Nov 16 Python
Django项目如何获得SSL证书与配置HTTPS
Apr 30 Python
如何在向量化NumPy数组上进行移动窗口
May 18 Python
Python 数据科学 Matplotlib图库详解
Jul 07 Python
Python爬虫入门案例之爬取二手房源数据
Oct 16 Python
如何使用Python自动生成报表并以邮件发送
Oct 15 #Python
如何在Win10系统使用Python3连接Hive
Oct 15 #Python
Python进行特征提取的示例代码
Oct 15 #Python
Python通过递归函数输出嵌套列表元素
Oct 15 #Python
Python安装第三方库攻略(pip和Anaconda)
Oct 15 #Python
Python return语句如何实现结果返回调用
Oct 15 #Python
python 进程池pool使用详解
Oct 15 #Python
You might like
php 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
php旋转图片90度的方法
2013/11/07 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
wordpress安装过程中遇到中文乱码的处理方法
2015/04/21 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
PHP文件操作方法汇总
2015/07/01 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
2016/08/23 PHP
PHP attributes()函数讲解
2019/02/03 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
获取下拉列表框的值是数组,split,$.inArray示例
2013/11/13 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
javascript每日必学之继承
2016/02/23 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
2016/08/17 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
bootstrap vue.js实现tab效果
2017/02/07 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
js自定义input文件上传样式
2018/10/26 Javascript
js实现黑白div块画空心的图形
2018/12/13 Javascript
vue插槽slot的理解和使用方法
2019/04/03 Javascript
微信小程序前端自定义分享的实现方法
2019/06/13 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
记一次vue跨域的解决
2020/10/21 Javascript
OpenCV HSV颜色识别及HSV基本颜色分量范围
2019/03/22 Python
python框架flask表单实现详解
2019/11/04 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
2020/02/26 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
集团公司人力资源部岗位职责
2014/01/03 职场文书
财务简历的自我评价
2014/03/05 职场文书
五好家庭事迹材料
2014/12/20 职场文书
甜美蛋糕店的创业计划书模板,拿来即用!
2019/08/21 职场文书
Python IO文件管理的具体使用
2022/03/20 Python