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程序设计有所帮助。

相关文章

  • turtle的基础使用之python turtle递归绘图

    turtle的基础使用之python turtle递归绘图

    这篇文章主要介绍了turtle的基础使用之python turtle递归绘图,turtle是一种比较简单的第三方库,下面借助递归绘图详细描述该内容,具有一的的知识性参考价值,需要的朋友可以参考一下
    2022-02-02
  • 学点简单的Django之第一个Django程序的实现

    学点简单的Django之第一个Django程序的实现

    这篇文章主要介绍了学点简单的Django之第一个Django程序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Python新手如何理解循环加载模块

    Python新手如何理解循环加载模块

    在本篇文章里小编给大家整理了关于Python新手如何理解循环加载模块相关知识点,有需要的朋友们可以学习下。
    2020-05-05
  • pycharm安装中文插件的2种方法图文详解

    pycharm安装中文插件的2种方法图文详解

    PyCharm可以说是当今最流行的一款Python IDE了,下面这篇文章主要给大家介绍了关于pycharm安装中文插件的2种方法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • pandas.concat实现DataFrame竖着拼接、横着拼接方式

    pandas.concat实现DataFrame竖着拼接、横着拼接方式

    这篇文章主要介绍了pandas.concat实现DataFrame竖着拼接、横着拼接方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • python字典多键值及重复键值的使用方法(详解)

    python字典多键值及重复键值的使用方法(详解)

    下面小编就为大家带来一篇python字典多键值及重复键值的使用方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个才参考。一起跟随小编过来看看吧
    2016-10-10
  • 用Python Tkinter库GUI编程创建图形用户界面

    用Python Tkinter库GUI编程创建图形用户界面

    这篇文章主要为大家介绍了用Python Tkinter库GUI编程创建图形用户界面,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 提升python处理速度原理及方法实例

    提升python处理速度原理及方法实例

    这篇文章主要介绍了提升python处理速度原理及方法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python数据结构之单链表详解

    Python数据结构之单链表详解

    这篇文章主要为大家详细介绍了Python数据结构之单链表的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • python中的常量和变量代码详解

    python中的常量和变量代码详解

    这篇文章主要介绍了python中的常量和变量,通过实例代码给大家介绍了局部和全局变量,需要的朋友参考下吧
    2018-07-07

最新评论