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 相关文章推荐
K-近邻算法的python实现代码分享
Dec 09 Python
解析Python中的eval()、exec()及其相关函数
Dec 20 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
Nov 14 Python
实例介绍Python中整型
Feb 11 Python
python将pandas datarame保存为txt文件的实例
Feb 12 Python
Python学习笔记之自定义函数用法详解
Jun 08 Python
如何运行带参数的python脚本
Nov 15 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
Jan 08 Python
Python如何把十进制数转换成ip地址
May 25 Python
Python替换NumPy数组中大于某个值的所有元素实例
Jun 08 Python
Python 3.9的到来到底是意味着什么
Oct 14 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 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
php写的简易聊天室代码
2011/06/04 PHP
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
PHP使用反向Ajax技术实现在线客服系统详解
2019/07/01 PHP
PHP实现统计代码行数小工具
2019/09/19 PHP
基于PHP实现用户在线状态检测
2020/11/10 PHP
浅谈javascript中createElement事件
2014/12/05 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
2015/11/27 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
canvas实现流星雨的背景效果
2017/01/13 Javascript
React学习笔记之条件渲染(一)
2017/07/02 Javascript
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
浅谈如何使用webpack构建多页面应用
2018/05/30 Javascript
jQuery中ajax请求后台返回json数据并渲染HTML的方法
2018/08/08 jQuery
webpack4+react多页面架构的实现
2018/10/25 Javascript
基于vue.js实现分页查询功能
2018/12/29 Javascript
Vue通过for循环随机生成不同的颜色或随机数的实例
2019/11/09 Javascript
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
python正则表达式抓取成语网站
2013/11/20 Python
举例讲解Python程序与系统shell交互的方式
2015/04/09 Python
Python中编写ORM框架的入门指引
2015/04/29 Python
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
python开发之tkinter实现图形随鼠标移动的方法
2015/11/11 Python
利用Python实现图书超期提醒
2016/08/02 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
python openCV获取人脸部分并存储功能
2019/08/28 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
2020/02/27 Python
党组织公开承诺书
2014/03/29 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
会议通知范文
2015/04/15 职场文书
羊脂球读书笔记
2015/06/30 职场文书
六一儿童节致辞
2015/07/31 职场文书
在JavaScript中如何使用宏详解
2021/05/06 Javascript
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python