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 lambda和Python def区别分析
Nov 30 Python
简单说明Python中的装饰器的用法
Apr 24 Python
Python EOL while scanning string literal问题解决方法
Sep 18 Python
在Python中操作日期和时间之gmtime()方法的使用
May 22 Python
Python解析excel文件存入sqlite数据库的方法
Nov 15 Python
Python向日志输出中添加上下文信息
May 24 Python
Python 实现删除某路径下文件及文件夹的实例讲解
Apr 24 Python
用python处理图片之打开\显示\保存图像的方法
May 04 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
Oct 28 Python
python 已知三条边求三角形的角度案例
Apr 12 Python
python 画条形图(柱状图)实例
Apr 24 Python
总结Python变量的相关知识
Jun 28 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多次include后导致全局变量global失效的解决方法
2015/02/28 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
使用IE6看老赵的博客 jQuery初探
2010/01/17 Javascript
js判断FCKeditor内容是否为空的两种形式
2013/05/14 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
2017/05/22 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
angular4自定义组件详解
2017/09/28 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
Vue页面切换和a链接的本质区别详解
2019/11/12 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
python如何实现excel数据添加到mongodb
2015/07/30 Python
Numpy截取指定范围内的数据方法
2018/11/14 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
django基于存储在前端的token用户认证解析
2019/08/06 Python
详解Python中的分支和循环结构
2020/02/11 Python
python 实现两个npy档案合并
2020/07/01 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
有机童装:Toby Tiger
2018/05/23 全球购物
定制iPhone和Macbook保护壳:Slick Case
2018/11/21 全球购物
什么是封装
2013/03/26 面试题
军训学生自我鉴定
2014/02/12 职场文书
安全教育片观后感
2015/06/17 职场文书
JavaScript实现显示和隐藏图片
2021/04/29 Javascript
用Python实现一个打字速度测试工具来测试你的手速
2021/05/28 Python
redis 存储对象的方法对比分析
2021/08/02 Redis
python playwrigh框架入门安装使用
2022/07/23 Python