Django框架登录加上验证码校验实现验证功能示例

 更新时间:2019年05月23日 10:34:06   作者:SpecYue  
这篇文章主要介绍了Django框架登录加上验证码校验实现验证功能,结合实例形式分析了Django框架基于Pillow模块的图形验证码生成与使用相关操作技巧,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

相关文章

  • Django CBV模型源码运行流程详解

    Django CBV模型源码运行流程详解

    这篇文章主要介绍了Django CBV模型源码运行流程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • python 字典常用方法超详细梳理总结

    python 字典常用方法超详细梳理总结

    这篇文章主要介绍了Python数据类型字典dictionary,字典是另一种可变容器模型,且可存储任意类型对象。本篇文字将详细讲述字典的常用方法,需要的可以参考一下
    2022-03-03
  • Python变量赋值的秘密分享

    Python变量赋值的秘密分享

    在Python中,我们令一个变量等于另外一个变量时,并不是把值传递给它,而是直接把指向的地址更改了,我们通过一个小例子来看看这个有趣的过程,需要的朋友可以参考下
    2018-04-04
  • Python中ArcPy栅格裁剪栅格(批量对齐栅格图像范围并统一行数与列数)

    Python中ArcPy栅格裁剪栅格(批量对齐栅格图像范围并统一行数与列数)

    本文介绍基于Python中ArcPy模块,实现基于栅格图像批量裁剪栅格图像,同时对齐各个栅格图像的空间范围,统一其各自行数与列数的方法,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • Python中常用的数据结构与算法优化技巧指南

    Python中常用的数据结构与算法优化技巧指南

    Python是一种强大而灵活的编程语言,它提供了丰富的数据结构和算法库,但是在处理大规模数据或者需要高效运行的情况下,需要考虑一些优化技巧,本文将介绍一些Python中常用的数据结构与算法优化技巧,需要的朋友可以参考下
    2024-05-05
  • python传递参数方式小结

    python传递参数方式小结

    这篇文章主要介绍了python传递参数方式,实例总结了Python常用的参数传递方式,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • python查看数据类型的方法

    python查看数据类型的方法

    在本篇文章里小编给大家整理了关于python怎么查看数据类型的相关知识点,有需要的朋友们学习下。
    2019-10-10
  • python 中yaml文件用法大全

    python 中yaml文件用法大全

    本文主要是总结yaml常用的一些数据形式,对于我们正常的项目使用,已经足够用了,接下来通过本文给大家分享python 中yaml文件用法,需要的朋友参考下吧
    2021-07-07
  • python如何实现不可变字典inmutabledict

    python如何实现不可变字典inmutabledict

    这篇文章主要介绍了python如何实现不可变字典inmutabledict,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Python知识之列表的十个小技巧分享

    Python知识之列表的十个小技巧分享

    这篇文章主要介绍了Python知识之列表的十个小技巧分享,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01

最新评论