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处理MS Word的实例讲解
May 08 Python
python matplotlib画图库学习绘制常用的图
Mar 19 Python
python实现栅栏加解密 支持密钥加密
Mar 20 Python
提升Python程序性能的7个习惯
Apr 14 Python
树莓派采用socket方式文件传输(python)
Jun 22 Python
Python 微信爬虫完整实例【单线程与多线程】
Jul 06 Python
python读取.mat文件的数据及实例代码
Jul 12 Python
Python拆分大型CSV文件代码实例
Oct 07 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
Oct 21 Python
Python3操作读写CSV文件使用包过程解析
Apr 10 Python
Python Dict找出value大于某值或key大于某值的所有项方式
Jun 05 Python
Python语法学习之进程的创建与常用方法详解
Apr 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
短波问题解答
2021/02/28 无线电
PHP持久连接mysql_pconnect()函数使用介绍
2012/02/05 PHP
thinkphp判断访客为手机端或PC端的方法
2014/11/24 PHP
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
JavaScript生成随机字符串的方法
2015/03/19 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
layer弹出层框架alert与msg详解
2017/03/14 Javascript
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
JS实现吸顶特效
2020/01/08 Javascript
原生js实现无缝轮播图
2020/01/11 Javascript
详解JavaScript中的Object.is()与&quot;===&quot;运算符总结
2020/06/17 Javascript
vue3.0 上手体验
2020/09/21 Javascript
springboot+vue实现文件上传下载
2020/11/17 Vue.js
[01:46]DOTA2上海特锦赛小组赛英文解说KotlGuy采访
2016/02/27 DOTA
[40:01]OG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python使用str &amp; repr转换字符串
2016/10/13 Python
Python处理文本文件中控制字符的方法
2017/02/07 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
python小项目之五子棋游戏
2019/12/26 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
推荐10个HTML5响应式框架
2016/02/25 HTML / CSS
德国家具在线:Fashion For Home
2017/03/11 全球购物
毕业生教师求职信
2013/10/20 职场文书
保护水资源的标语
2014/06/17 职场文书
条幅标语大全
2014/06/20 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
大学生简历自我评价2015
2015/03/03 职场文书
加入学生会自荐书
2015/03/05 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书