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爬虫入门教程之糗百图片爬虫代码分享
Sep 02 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
Dec 25 Python
Pycharm学习教程(3) 代码运行调试
May 03 Python
Django与JS交互的示例代码
Aug 23 Python
python机器学习之决策树分类详解
Dec 20 Python
通过celery异步处理一个查询任务的完整代码
Nov 19 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
Mar 17 Python
python 读取二进制 显示图片案例
Apr 24 Python
python字符串的index和find的区别详解
Jun 20 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
Dec 31 Python
Python读取文件夹下的所有文件实例代码
Apr 02 Python
python面向对象版学生信息管理系统
Jun 24 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伪静态的实现方法解析
2020/07/31 PHP
一个可以随意添加多个序列的tag函数
2009/07/21 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
node+express制作爬虫教程
2016/11/11 Javascript
Nodejs中Express 常用中间件 body-parser 实现解析
2017/05/22 NodeJs
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
2017/12/18 jQuery
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
js+canvas实现验证码功能
2020/09/21 Javascript
JS随机密码生成算法
2019/09/23 Javascript
jQuery实现小火箭返回顶部特效
2020/02/03 jQuery
JQuery通过键盘控制键盘按下与松开触发事件
2020/08/07 jQuery
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
vue中activated的用法
2021/01/03 Vue.js
[04:51]TI10典藏宝瓶Ⅱ外观视频展示
2020/08/15 DOTA
零基础写python爬虫之神器正则表达式
2014/11/06 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
tensorflow实现对张量数据的切片操作方式
2020/01/19 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
2020/03/05 Python
英国工艺品购物网站:Minerva Crafts
2018/01/29 全球购物
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
印尼综合在线预订网站:Tiket.com(机票、酒店、火车、租车和娱乐)
2018/10/11 全球购物
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
意大利奢侈品牌在线精品店:Jole.it
2020/11/23 全球购物
ktv收银员岗位职责
2013/12/16 职场文书
推荐信怎么写
2014/05/09 职场文书
2014年采购员工作总结
2014/11/18 职场文书
现役军人家属慰问信
2015/03/24 职场文书
考试没考好检讨书
2015/05/06 职场文书
2015年司机年终工作总结
2015/05/14 职场文书
详解Python牛顿插值法
2021/05/11 Python
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript