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 Property属性的2种用法
Jun 21 Python
不知道这5种下划线的含义,你就不算真的会Python!
Oct 09 Python
Python实现的拉格朗日插值法示例
Jan 08 Python
Python实现连接MySql数据库及增删改查操作详解
Apr 16 Python
详解Python 函数如何重载?
Apr 23 Python
python数据类型之间怎么转换技巧分享
Aug 20 Python
Python数据可视化:顶级绘图库plotly详解
Dec 07 Python
python plotly画柱状图代码实例
Dec 13 Python
Python文本处理简单易懂方法解析
Dec 19 Python
python re.match()用法相关示例
Jan 27 Python
python 列表推导和生成器表达式的使用
Feb 01 Python
pygame面向对象的飞行小鸟实现(Flappy bird)
Apr 01 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新手上路(十一)
2006/10/09 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
2016/04/12 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
JQuery从头学起第三讲
2010/07/06 Javascript
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
2014/05/04 Javascript
jquery ztree实现下拉树形框使用到了json数据
2014/05/14 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
2018/05/29 Javascript
Vue.directive使用注意(小结)
2018/08/31 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
详解基于React.js和Node.js的SSR实现方案
2019/03/21 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
python显示天气预报
2014/03/02 Python
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
python中for语句简单遍历数据的方法
2015/05/07 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
使用python实现简单五子棋游戏
2019/06/18 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
python Django 创建应用过程图示详解
2019/07/29 Python
Python换行与不换行的输出实例
2020/02/19 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
微软香港官网及网上商店:Microsoft HK
2016/09/01 全球购物
C++如何引用一个已经定义过的全局变量
2014/08/25 面试题
保密普查工作实施方案
2014/02/25 职场文书
材料员岗位职责
2014/03/13 职场文书
给校长的建议书500字
2014/05/15 职场文书
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
医生见习报告范文
2014/11/03 职场文书
2016年圣诞节义工活动总结
2016/04/01 职场文书
年会邀请函的格式及范文五篇
2019/11/02 职场文书
python3实现无权最短路径的方法
2021/05/12 Python