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 04 Python
Python实现将数据写入netCDF4中的方法示例
Aug 30 Python
virtualenv 指定 python 解释器的版本方法
Oct 25 Python
python+unittest+requests实现接口自动化的方法
Nov 29 Python
详解python配置虚拟环境
Apr 08 Python
python+OpenCV实现车牌号码识别
Nov 08 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
Dec 04 Python
python 实现生成均匀分布的点
Dec 05 Python
Python装饰器用法与知识点小结
Mar 09 Python
Python 如何实现访问者模式
Jul 28 Python
python实现梯度下降算法的实例详解
Aug 17 Python
python模块与C和C++动态库相互调用实现过程示例
Nov 02 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 字符转义 注意事项
2009/05/27 PHP
php设计模式之单例模式实例分析
2015/02/25 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
jquery ajax 登录验证实现代码
2009/09/23 Javascript
JavaScript 学习笔记(六)
2009/12/31 Javascript
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
js实现图片无缝滚动
2015/12/23 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
ES6学习教程之对象字面量详解
2017/10/09 Javascript
简单谈谈vue的过渡动画(推荐)
2017/10/11 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
2019/05/10 Javascript
ES6 Proxy实现Vue的变化检测问题
2019/06/11 Javascript
Python异常学习笔记
2015/02/03 Python
Python3 socket同步通信简单示例
2017/06/07 Python
python使用Matplotlib绘制分段函数
2018/09/25 Python
python将list转为matrix的方法
2018/12/12 Python
深入浅析Python科学计算库Scipy及安装步骤
2019/10/12 Python
最简单的matplotlib安装教程(小白)
2020/07/28 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
浅谈Html5移动端ios/Android兼容性总结
2018/06/01 HTML / CSS
ABOUT YOU罗马尼亚:超过600个时尚品牌
2019/09/19 全球购物
ellesse美国官方商店:意大利高级运动服品牌
2019/10/29 全球购物
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
毕业生的自我评价范文
2013/12/31 职场文书
一帮一活动总结
2014/05/08 职场文书
2014年客房部工作总结
2014/11/22 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
初二物理教学反思
2016/02/19 职场文书
建房合同协议书
2016/03/21 职场文书
浅谈Python数学建模之整数规划
2021/06/23 Python