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时区设置方法与pytz查询时区教程
Nov 27 Python
python实现dnspod自动更新dns解析的方法
Feb 14 Python
python opencv实现任意角度的透视变换实例代码
Jan 12 Python
基于循环神经网络(RNN)实现影评情感分类
Mar 26 Python
python excel使用xlutils类库实现追加写功能的方法
May 02 Python
对python 操作solr索引数据的实例详解
Dec 07 Python
使用pyinstaller逆向.pyc文件
Dec 20 Python
解决Pycharm的项目目录突然消失的问题
Jan 20 Python
python 爬取疫情数据的源码
Feb 09 Python
python3 正则表达式基础廖雪峰
Mar 25 Python
Python几种常见算法汇总
Jun 02 Python
python 中 .py文件 转 .pyd文件的操作
Mar 04 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
为什么那些咖啡爱好者大多看不上连锁咖啡店?
2021/03/06 咖啡文化
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
2012/08/09 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
jQuery模拟新浪微博首页滚动效果的方法
2015/03/11 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
使用Angular.js实现简单的购物车功能
2016/11/21 Javascript
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
nodeJS实现路由功能实例代码
2017/06/08 NodeJs
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
2019/09/02 Javascript
layui动态绑定事件的方法
2019/09/20 Javascript
微信小程序登陆注册功能的实现代码
2019/12/10 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
在vue中使用防抖函数组件操作
2020/07/26 Javascript
vue 扩展现有组件的操作
2020/08/14 Javascript
Python和GO语言实现的消息摘要算法示例
2015/03/10 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
Python中的hypot()方法使用简介
2015/05/18 Python
NumPy.npy与pandas DataFrame的实例讲解
2018/07/09 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
pytorch中的inference使用实例
2020/02/20 Python
python实现随机加减法生成器
2020/02/24 Python
Python 使用 environs 库定义环境变量的方法
2020/02/25 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
浙江文明网签名寄语
2014/01/18 职场文书
小学教师国培感言
2014/02/08 职场文书
教师演讲稿大全
2014/05/16 职场文书
网络技术专业求职信
2014/07/13 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
创业计划书之蛋糕店
2019/08/29 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫
vscode远程免密登入Linux服务器的配置方法
2022/06/28 Servers