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


Posted in Python onMay 23, 2019

本文实例讲述了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程序设计有所帮助。

Python 相关文章推荐
Python实现股市信息下载的方法
Jun 15 Python
python的多重继承的理解
Aug 06 Python
Django中Model的使用方法教程
Mar 07 Python
numpy 进行数组拼接,分别在行和列上合并的实例
May 08 Python
java中两个byte数组实现合并的示例
May 09 Python
python flask安装和命令详解
Apr 02 Python
python-pyinstaller、打包后获取路径的实例
Jun 10 Python
python线程的几种创建方式详解
Aug 29 Python
Django3.0 异步通信初体验(小结)
Dec 04 Python
Python3.9又更新了:dict内置新功能
Feb 28 Python
jupyter notebook 多环境conda kernel配置方式
Apr 10 Python
python 等差数列末项计算方式
May 03 Python
python图形工具turtle绘制国际象棋棋盘
May 23 #Python
python os模块简单应用示例
May 23 #Python
python使用turtle绘制国际象棋棋盘
May 23 #Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
May 23 #Python
Python3.8中使用f-strings调试
May 22 #Python
总结Python图形用户界面和游戏开发知识点
May 22 #Python
Python闭包和装饰器用法实例详解
May 22 #Python
You might like
PHP5函数小全(分享)
2013/06/06 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
2014/08/22 PHP
php数组键名技巧小结
2015/02/17 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
2016/05/16 PHP
33种Javascript 表格排序控件收集
2009/12/03 Javascript
在html页面上拖放移动标签
2010/01/08 Javascript
JS 类型转换常见方法小结
2010/05/31 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
JavaScript中的单引号和双引号报错的解决方法
2014/09/01 Javascript
jqTransform美化表单
2015/10/10 Javascript
jquery调整表格行tr上下顺序实例讲解
2016/01/09 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
jQuery中的deferred对象和extend方法详解
2017/05/08 jQuery
nodejs中各种加密算法的实现详解
2019/07/11 NodeJs
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
vue图片上传组件使用详解
2019/12/23 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
2020/11/30 Javascript
[01:17:12]职来职往完美电竞专场
2014/09/18 DOTA
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
python+opencv实现阈值分割
2018/12/26 Python
python和php哪个更适合写爬虫
2020/06/22 Python
中国电子产品批发商/跨境电商/外贸网:Sunsky-online
2020/04/20 全球购物
init进程的作用
2012/04/12 面试题
医学生个人求职信范文
2013/09/24 职场文书
应届生求职简历的自我评价怎么写
2013/10/23 职场文书
计算机应用毕业生自荐信
2013/10/23 职场文书
村官工作鉴定评语
2014/01/27 职场文书
有兼职工作经历的简历自我评价
2014/03/07 职场文书
可口可乐广告词
2014/03/20 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
购房个人委托书范本
2014/10/11 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
维稳工作承诺书
2015/01/20 职场文书
初中生物教学反思
2016/02/20 职场文书