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创建系统目录的方法
Mar 11 Python
修改Python的pyxmpp2中的主循环使其提高性能
Apr 24 Python
python将文本转换成图片输出的方法
Apr 28 Python
Python的Django框架中的Context使用
Jul 15 Python
Python基础知识_浅谈用户交互
May 31 Python
关于Python中空格字符串处理的技巧总结
Aug 10 Python
详细分析python3的reduce函数
Dec 05 Python
Python生成8位随机字符串的方法分析
Dec 05 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
Numpy 中的矩阵求逆实例
Aug 26 Python
Django框架 querySet功能解析
Sep 04 Python
Python控制鼠标键盘代码实例
Dec 08 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初学者头疼问题总结
2006/10/09 PHP
PHP4实际应用经验篇(4)
2006/10/09 PHP
Wordpress php 分页代码
2009/10/21 PHP
判断是否为指定长度内字符串的php函数
2010/02/16 PHP
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
Javascript之文件操作
2007/03/07 Javascript
开发跨浏览器javascript常见注意事项
2009/01/01 Javascript
重载toString实现JS HashMap分析
2011/03/13 Javascript
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
2013/03/18 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
JQuery Highcharts 动态生成图表的方法
2013/11/15 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
2015/10/27 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
JS动态生成年份和月份实例代码
2017/02/04 Javascript
解决vuecli3.0热更新失效的问题
2018/09/19 Javascript
JavaScript模板引擎应用场景及实现原理详解
2018/12/14 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
2020/07/07 Javascript
python实现kMeans算法
2017/12/21 Python
pandas数值计算与排序方法
2018/04/12 Python
tensorflow实现简单逻辑回归
2018/09/07 Python
python实现定时发送qq消息
2019/01/18 Python
用python制作个视频下载器
2021/02/01 Python
Pytorch 中的optimizer使用说明
2021/03/03 Python
巴西网上药房:onofre
2016/11/21 全球购物
婴儿地球:Baby Earth
2018/12/25 全球购物
出资证明书范本(标准版)
2014/09/24 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
中小学校园安全广播稿
2014/09/29 职场文书
教师批评与自我批评总结
2014/10/16 职场文书
大学推普周活动总结
2015/05/07 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
2019年销售人员的职业生涯规划书
2019/03/25 职场文书
golang实现浏览器导出excel文件功能
2022/03/25 Golang