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实现的批量下载RFC文档
Mar 10 Python
Linux下用Python脚本监控目录变化代码分享
May 21 Python
VSCode下好用的Python插件及配置
Apr 06 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
Sep 17 Python
Python代码实现删除一个list里面重复元素的方法
Apr 02 Python
pyqt5 使用label控件实时显示时间的实例
Jun 14 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
Oct 24 Python
python 实现视频 图像帧提取
Dec 10 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
Sep 09 Python
Python3使用 GitLab API 进行批量合并分支
Oct 15 Python
Python word文本自动化操作实现方法解析
Nov 05 Python
Python datetime模块的使用示例
Feb 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
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
基于PHP实现用户注册登录功能
2016/10/14 PHP
jquery学习笔记 用jquery实现无刷新登录
2011/08/08 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
jQuery中DOM操作实例分析
2015/01/23 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
微信小程序实现简单input正则表达式验证功能示例
2017/11/30 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
vue实现绑定事件的方法实例代码详解
2019/06/20 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
[01:01:24]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第三局
2016/02/25 DOTA
[03:17]DOTA2-DPC中国联赛1月29日Recap集锦
2021/03/11 DOTA
python str与repr的区别
2013/03/23 Python
Python算法应用实战之栈详解
2017/02/04 Python
python如何制作缩略图
2019/04/30 Python
用Python配平化学方程式的方法
2019/07/20 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
应聘护士自荐信
2013/10/21 职场文书
工商技校毕业生自荐信
2013/11/15 职场文书
大学生应聘推荐信范文
2013/11/19 职场文书
抗震救灾标语
2014/06/26 职场文书
2014年全国爱牙日宣传活动方案
2014/09/21 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
终止劳动合同协议书
2014/10/05 职场文书
个人总结格式范文
2015/03/09 职场文书