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

相关文章

  • python转换pkl模型文件为txt文件问题

    python转换pkl模型文件为txt文件问题

    这篇文章主要介绍了python转换pkl模型文件为txt文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python 中的 import 机制之实现远程导入模块

    Python 中的 import 机制之实现远程导入模块

    模块导入( import ),是指在一个模块中使用另一个模块的代码的操作,它有利于代码的复用。这篇文章主要介绍了Python 的 import 机制:实现远程导入模块,需要的朋友可以参考下
    2019-10-10
  • 用python爬取电脑壁纸实例代码

    用python爬取电脑壁纸实例代码

    大家好,本篇文章主要讲的是用python爬取电脑壁纸实例代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • 解决Django Static内容不能加载显示的问题

    解决Django Static内容不能加载显示的问题

    今天小编就为大家分享一篇解决Django Static内容不能加载显示的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python3.x中安装web.py步骤方法

    python3.x中安装web.py步骤方法

    在本篇文章里小编给大家分享的是关于python3.x中安装web.py步骤方法,需要的朋友们可以学习下。
    2020-06-06
  • python mysql中in参数化说明

    python mysql中in参数化说明

    这篇文章主要介绍了python mysql中in参数化说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 基于Python制作GIF表情包生成工具

    基于Python制作GIF表情包生成工具

    在当前无表情包不会聊天的时代,怎么也不能输在表情包数量不足上啊,今天咱们就来基于Python制作一个 gif 生成工具,用来制作表情包也太好用啦
    2023-07-07
  • Django REST Swagger实现指定api参数

    Django REST Swagger实现指定api参数

    这篇文章主要介绍了Django REST Swagger实现指定api参数,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • python自动化测试selenium操作下拉列表实现

    python自动化测试selenium操作下拉列表实现

    这篇文章主要为大家介绍了python自动化测试selenium操作下拉列表实现方式,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • python中print格式化输出的问题

    python中print格式化输出的问题

    所谓格式化输出,就是创建一个可以嵌入变量内容的字符串。这篇文章主要介绍了python中print格式化输出,需要的朋友可以参考下
    2021-04-04

最新评论