django-验证码
参考资料
Django 2.1.7 模板 - 图片验证码的实现 - 云+社区 - 腾讯云
https://cloud.tencent.com/developer/article/1455075
安装Pillow
pip install pillow
Pillow 5.4.1
验证码的使用
from django.shortcuts import render, redirect, HttpResponse# 验证码所需
# 验证码
from PIL import Image, ImageDraw, ImageFont
from django.utils.six import BytesIO
import osfrom dj2019 import settings # 引入项目配置,用于拼接字体的全路径def verifycode(request):# 引入随机函数模块import random# 定义变量,用于画面的背景色、宽、高bgcolor = (random.randrange(20, 100), random.randrange(20, 100), 255)width = 100height = 25# 创建画面对象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)# 定义验证码的备选值str1 = 'ABCD123EFGHIJK456LMNOPQRS789TUVWXYZ0'# 随机选取4个值作为验证码rand_str = ''for i in range(0, 4):rand_str += str1[random.randrange(0, len(str1))]# 构造字体对象FONT_PATH = os.path.join(settings.BASE_DIR, 'static/font/simhei.ttf') # 字体文件路径font = ImageFont.truetype(FONT_PATH, 23)# 构造字体颜色fontcolor = (255, random.randrange(0, 255), random.randrange(0, 255))# 绘制4个字draw.text((5, 2), rand_str[0], font=font, fill=fontcolor)draw.text((25, 2), rand_str[1], font=font, fill=fontcolor)draw.text((50, 2), rand_str[2], font=font, fill=fontcolor)draw.text((75, 2), rand_str[3], font=font, fill=fontcolor)# 释放画笔del draw# 存入session,用于做进一步验证request.session['verifycode'] = rand_str# 内存文件操作buf = BytesIO()# 将图片保存在内存中,文件类型为pngim.save(buf, 'png')# 将内存中的图片数据返回给客户端,MIME类型为图片pngreturn HttpResponse(buf.getvalue(), 'image/png')
# # Create your views here.
# def identifying_code(request):
#
# return render(request, "appone/identifying_code.html")
验证码的效果
应用到网站中
》写一个文本框,后面根验证码
》提交文本框的内容,比对验证码
》视图函数
def testcode(request):if request.GET:# 如果有参数,表示提交verifycode = request.GET.get("verifycode")sescode = request.session.get("verifycode")if verifycode.upper() == sescode.upper():return HttpResponse("{}验证成功".format(verifycode))else:return HttpResponse("{}验证失败".format(verifycode))else:# 没有参数,表示进入该页面return render(request, "testcode.html")
》模板页面
<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport"content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title>
</head>
<body>
<form action=""><input type="text" name="verifycode"> <img src="{% url "one:verifycode" %}" alt="验证码"><br><input type="submit" value="提交">
</form>
</body>
</html>
》界面效果
作业
》实现验证码的视图
》输入数据,后端验证
》实现点击验证码,自动更新的效果
》注册功能,加上验证码
》登陆的功能,加上验证码
点击图片刷新验证码
》前端代码
<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport"content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><script src="/static/js/jquery-1.12.4.min.js"></script><script>$(main);function main() {{#拿到图片标签#}$("#verify_img").click(function () {{#让图标标签重橷加载一次#}{#方法二种#}{#1,简单的,给图片标签的src属性,重新赋值#}var src = $("#verify_img").attr("src");{#alert(src);#}var new_src = src+'?'+Math.random()alert(new_src)$("#verify_img").attr("src", new_src);{#2,麻烦的,发起ajax请求,请求验证码的视图函数,返回值给src#}});}</script>
</head>
<body>
<form action=""><input type="text" name="verifycode"> <img id="verify_img" src="{% url "one:verifycode" %}" alt="验证码"><br><input type="submit" value="提交">
</form>
</body>
</html>
django-验证码相关推荐
- Django 验证码4.4
验证码 在用户注册.登录页面,为了防止暴力请求,可以加入验证码功能,如果验证码错误,则不需要继续处理,可以减轻一些服务器的压力 使用验证码也是一种有效的防止crsf的方法 验证码效果如下图: 验证码视 ...
- django验证码模块使用
1.下载模块 pip install django-simple-captcha 2.在一级urls内配置URL url(r'^captcha/', include('captcha.urls')), ...
- Django验证码*短信验证码之2-容联云通讯短信平台(联云通讯短信平台介绍、容联云通讯Python SDK、封装发送短信单例类)
容联云通讯短信平台介绍 容联云通讯网址:https://www.yuntongxun.com/ 容联云管理控制台 容联云创建应用 容联云通讯Python SDK https://doc.yuntong ...
- django图形验证码和邮件
设计知识点: django验证码插件的使用 django发送邮件 form表单数据过滤,前端渲染,包括错误信息 一.图形验证码 1.准备工作 pip install django-simple-cap ...
- python官方网站地址-一些python牛人地址分享
http://www.bootcdn.cn/bootstrap/ bootstrap cdn在线地址 1. http://www.cnblogs.com/linhaifeng/articles/653 ...
- 老男孩老师的博客地址 - 转自devops1992
害怕他那天不让人看了,所以我就复制一份到我自己的博客里. http://www.bootcdn.cn/bootstrap/ bootstrap cdn在线地址 http://www.cnblogs. ...
- 老男孩老师的博客地址
http://www.bootcdn.cn/bootstrap/ bootstrap cdn在线地址 http://www.cnblogs.com/vamei/archive/2012/09/13/ ...
- Celery 实现异步任务-one
celery异步任务: 环境准备 安装celery ,django-celery. 就是一个专注于实时处理和任务调度的分布式队列. 可以异步执行的任务交给后台处理,以防网络阻塞,减小响应时间 cele ...
- 为 Django admin 登录页添加验证码
为什么80%的码农都做不了架构师?>>> 历史原因,使用上古版本 django 1.6.5,但新版本应该大同小异 首先添加自定义后台模块app, 如adm,并添加到 INSTA ...
- Django博客系统(短信验证码)
1. 容联云短信平台操作 1.容联云官网 容联云通讯网址:容联云通讯_短信平台.手机验证码.语音验证码.IM即时通讯.云呼叫系统等互联网通信服务 注册并登陆 2.容联云管理控制台 3.添加容联云测试手 ...
最新文章
- 成为人工智能视觉应用工程师需要多久?我用了45天!
- [PHP打野] 对pear-FSM的研究(一)基本了解
- C++类型转换: static_cast const_cast reinterpret_cast dynamic_cast
- MVP模式在Android中的应用(附UML高清大图,使用RecyclerView举例)
- MyBatis复习(三):MyBatis核心对象SqlSessionFactory和SqlSession
- linux命令收集录
- python toimage函数 -baijiahao_财码Python管理会计小实验成本性态分析So Easy
- angularjs -- 页面模板清除
- Smart3D模型合并
- UML之用例图转类图
- python数据分析社区_python之数据分析
- Python爬取拉勾网数据分析职位
- LSD_SLAM编译运行
- [转载]【苹果千层派】轻松玩转酥皮_万金油_新浪博客
- ubuntu 下创建加密文件夹
- 淘宝首页链接跳转,非taobao.com域名下的链接处理
- 无盘工作站给服务器ip地址协议,如何给无盘工作站安装TCP IP协议
- 用数组输出26个小写字母
- 133、初沸点的概念
- 计算机无法连接富士网络打印机,网络打印机无法连接的解决方法是什么
热门文章
- vuejs路由插件:vue-router的工作原理
- MongoDB可视化界面工具Studio3T的安装 - 讲解篇
- 动态壁纸小程序(带流量主)源码
- 【WP主题】仿下载吧全开源无加密wordpress主题模板内含newzhan2.60无授权版本
- 百分百储值卡回收网站源码+手机模板
- 二开微信表情包小程序魔改版源码
- Zblog极致·APP下载单页主题
- linux 上plsql命令_在 Linux 上压缩文件:zip 命令的各种变体及用法 | Linux 中国
- 网页聊天室win10界面源码
- zblog二开WAP网址轻导航网站源码