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多线程编程(二):启动线程的两种方法
Apr 05 Python
python实现字符串和日期相互转换的方法
May 13 Python
python调用摄像头显示图像的实例
Aug 03 Python
浅谈django2.0 ForeignKey参数的变化
Aug 06 Python
简单的Python调度器Schedule详解
Aug 30 Python
python opencv将表格图片按照表格框线分割和识别
Oct 30 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
Nov 26 Python
python_mask_array的用法
Feb 18 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
Apr 22 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
Python中如何引入第三方模块
May 27 Python
pandas DataFrame运算的实现
Jun 14 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
dede3.1分页文字采集过滤规则详说(图文教程)
2007/04/03 PHP
php学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
php 生成唯一id的几种解决方法
2013/03/08 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
jQuery学习笔记之jQuery选择器的使用
2010/12/22 Javascript
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
JavaScript箭头函数_动力节点Java学院整理
2017/06/28 Javascript
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
2018/09/07 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
JS实现百度搜索框关键字推荐
2020/02/17 Javascript
原生js 实现表单验证功能
2021/02/08 Javascript
python topN 取最大的N个数或最小的N个数方法
2018/06/04 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
python提取xml里面的链接源码详解
2019/10/15 Python
Python自动化完成tb喵币任务的操作方法
2019/10/30 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
使用keras实现非线性回归(两种加激活函数的方式)
2020/07/05 Python
Python实现一个优先级队列的方法
2020/07/31 Python
英国奢侈品网站:MatchesFashion
2016/12/16 全球购物
Hawes & Curtis澳大利亚官网:英国经典服饰品牌
2018/10/29 全球购物
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
高级技校毕业生自荐信
2013/11/18 职场文书
大学生自我鉴定评语
2014/01/27 职场文书
英语老师推荐信
2014/02/26 职场文书
园林系毕业生求职信
2014/06/23 职场文书
2014年小学美术工作总结
2014/12/20 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
论语读书笔记
2015/06/26 职场文书
建国70周年的心得体会(2篇)
2019/09/20 职场文书