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 相关文章推荐
python定时器使用示例分享
Feb 16 Python
简单的抓取淘宝图片的Python爬虫
Dec 25 Python
Python使用PyCrypto实现AES加密功能示例
May 22 Python
python中装饰器级连的使用方法示例
Sep 29 Python
Python3处理HTTP请求的实例
May 10 Python
flask 实现token机制的示例代码
Nov 07 Python
Python 实现训练集、测试集随机划分
Jan 08 Python
jupyter notebook插入本地图片的实现
Apr 13 Python
python 双循环遍历list 变量判断代码
May 04 Python
python模拟点击玩游戏的实例讲解
Nov 26 Python
Python self用法详解
Nov 28 Python
Python如何配置环境变量详解
May 18 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
漫威DC御用漫画家去世 他的表情包曾走红网络
2020/04/09 欧美动漫
JQuery 无废话系列教程(一) jquery入门 [推荐]
2009/06/23 Javascript
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
15款优秀的jQuery导航菜单插件分享
2011/07/19 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
js判断浏览器类型为ie6时不执行
2014/06/15 Javascript
Mac OS X 系统下安装和部署Egret引擎开发环境
2014/09/03 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
jQuery grep()方法详解及实例代码
2016/10/30 Javascript
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
python将人民币转换大写的脚本代码
2013/02/10 Python
Python实现简单的文件传输与MySQL备份的脚本分享
2016/01/03 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
python3实现逐字输出的方法
2019/01/23 Python
python Django编写接口并用Jmeter测试的方法
2019/07/31 Python
python中的列表与元组的使用
2019/08/08 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
2020/10/19 Python
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
家长给孩子的表扬信
2014/01/17 职场文书
《狼》教学反思
2014/03/02 职场文书
厨房管理计划书
2014/04/27 职场文书
连带责任保证书
2014/04/29 职场文书
第二批党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
员工规章制度范本
2015/08/07 职场文书
Python Django 后台管理之后台模型属性详解
2021/04/25 Python
MySQL提取JSON字段数据实现查询
2022/04/22 MySQL