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 获取新浪微博的最新公共微博实例分享
Jul 03 Python
Python读大数据txt
Mar 28 Python
python利用正则表达式排除集合中字符的功能示例
Oct 10 Python
python判断字符串是否是json格式方法分享
Nov 07 Python
详解python上传文件和字符到PHP服务器
Nov 24 Python
使用Python实现windows下的抓包与解析
Jan 15 Python
dataframe设置两个条件取值的实例
Apr 12 Python
Python读取mat文件,并保存为pickle格式的方法
Oct 23 Python
Python基础之函数的定义与使用示例
Mar 23 Python
在pycharm中为项目导入anacodna环境的操作方法
Feb 12 Python
Python读取xlsx数据生成图标代码实例
Aug 12 Python
python简单验证码识别的实现过程
Jun 20 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类
2006/10/09 PHP
php简单截取字符串代码示例
2016/10/19 PHP
PHP新特性详解之命名空间、性状与生成器
2017/07/18 PHP
jQuery对象和DOM对象的相互转化实现代码
2010/03/02 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
AngularJS基础教程之简单介绍
2015/09/27 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
jquery跟随屏幕滚动效果的实现代码
2016/04/13 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
jQuery实现调整表格单列顺序完整实例
2016/06/20 Javascript
jQuery的ajax下载blob文件
2016/07/21 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
2016/12/19 Javascript
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
JavaScript实现省市区三级联动
2020/02/13 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
2020/05/10 Javascript
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python3.0与2.X版本的区别实例分析
2014/08/25 Python
使用python模拟命令行终端的示例
2019/08/13 Python
python求绝对值的三种方法小结
2019/12/04 Python
TensorFlow查看输入节点和输出节点名称方式
2020/01/04 Python
Python+appium框架原生代码实现App自动化测试详解
2020/03/06 Python
Python datetime模块使用方法小结
2020/06/18 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
沙龙级头发造型工具:FOXYBAE
2018/07/01 全球购物
Hanky Panky官方网站:内衣和睡衣
2019/07/25 全球购物
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
运动会闭幕式解说词
2014/02/21 职场文书
《夕阳真美》教学反思
2014/04/27 职场文书
三峡人家导游词
2015/01/31 职场文书
Java实现注册登录跳转
2022/06/16 Java/Android