django生成验证码
django生成验证码
# 制作验证码
def verify_code():
# 1,定义变量,用于画面的背景色、宽、高
# random.randrange(20, 100)意思是在20到100之间随机找一个数
bgcolor = (random.randrange(20, 100), random.randrange(20, 100), 159)
width = 100
height = 30
# 2,创建画面对象
im = Image.new('RGB', (width, height), bgcolor)
# 3,创建画笔对象
draw = ImageDraw.Draw(im)
# 4,调用画笔的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)
# 5,定义验证码的备选值
str1 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
# 6,随机选取4个值作为验证码
rand_str = ''
for i in range(0, 4):
rand_str += str1[random.randrange(0, len(str1))] # 7,构造字体对象
fontPath = os.path.join(settings.STATICFILES_DIRS[0], 'font/System San Francisco Text Medium.ttf') font = ImageFont.truetype(fontPath, 23)
# 8,构造字体颜色
fontcolor = (255, random.randrange(0, 255), random.randrange(0, 255))
# 9,绘制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)
# 9,用完画笔,释放画笔
del draw
# 10,内存文件操作
buf = BytesIO()
# 11,将图片保存在内存中,文件类型为png
im.save(buf, 'png')
# 12,返回图片的二进制信息和图片的随机数字
return buf.getvalue(), rand_str
将fontpath改成自己的就好了,需要的时候直接调用
django生成验证码的更多相关文章
- Django 生成验证码或二维码 pillow模块
一.安装PIL PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,API也非常简单易用. PIL模块只支持到Python 2 ...
- 7月2日 Django 生成验证码、
html页面里 {# 验证码 #} <div class="form-group " id="v-code-wrapper"> <label ...
- Django(十六)基于模板的登录案例:登录装饰器、csrf攻击方式及防护、ajax的Post 的csrf开启写法、生成验证码、加验证码登录、反向解析+传参
一.csrf攻击 1.1 csrf攻击(跨站请求伪造) [csrf攻击即]:通过第3方网站,伪造请求(前提条件是你已经登录正常网站,并保存了session或cookie登录信息且没有退出),第三方网站 ...
- Django之验证码的生成和使用
1.基于PIL生成一个带验证码的图片和验证码,生成验证码图片需要Monaco.ttf字体,可按自己要求更改check_code中的字体和字体文件位置,如下图 #!/usr/bin/env python ...
- python django 实现验证码的功能
我也是刚学Python Django不久很多都不懂,所以我现在想一边学习一边记录下来然后大家一起讨论! 验证码功能一开始我在网上找了很多的demo但是我在模仿他们写的时候,发现在我的版本上根本就不能 ...
- Django之验证码
一.自己生成验证码 二.极验科技互动验证码 使用前步骤:下载官网文件——pip install geetest——引入其封装的js模块 代码分为三段:生成验证码——显示验证码——验证验证码. from ...
- 随机生成验证码及python中的事务
1.随机生成验证码 # import random # print(random.random()) #-1的小数 # print(random.randint(,)) #包括1和3 # print( ...
- Django 之验证码实现
1. django-simple-captcha 模块 安装 django-simple-captcha pip install django-simple-captcha pip install P ...
- Django中验证码的登录
需求概述 一般登录页面或者其他页面都需要验证码的功能,那在Django中如何实现呢? 这基本就需要用到第三方模块了:pillow 还需要两个文件,一个是字体文件:Monaco.ttf,另一个是一个模块 ...
随机推荐
- scrapy全栈抓xpc练习
# spider文件 # -*- coding: utf-8 -*- import scrapy import re from scrapy import Request import json im ...
- npm install --save,npm install --save-dev,npm install
react npm install --save 与 npm install --save-dev 的区别以npm安装msbuild为例: nam install msbuild: 会把msbuild ...
- C# 时间戳(TimeStamp)与时间(DateTime)的互相转换
什么是时间戳:时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数. 时间戳在线转换网址:https://tool.lu/ ...
- Jenkins的制品管理
Jenkins的制品管理 制品是什么? 也叫产出物或工件.制品是软件开发过程中产生的多种有形副产品之一.广义的制品包括用例.UML图.设计文档等.而狭义的制品就可以简单地理解为二进制包.虽然有些代码是 ...
- SpringMVC框架——原理及使用
核心组件 1. DispatcherServlet:前端控制器器,负责调度其他组件的执行,可降低不同组件之间的耦合性,是Spring MVC 的核心模块. 2. Handler:处理器,完成具体的业务 ...
- Dapper解析嵌套的多层实体类
在作项目的时候,我会将一些不涉及查询的字段,形成JSON统一存放在一个字段中,向下面这样的来建实体类, public class WechatModel { public string wechati ...
- jwt token认证
目录 1.drf-jwt手动签发与校验 2.drf小组件:过滤.筛选.排序.分页 => 针对与群查接口 jwt_token源码分析(入口) 签发token源码分析 校验token源码分析 url ...
- hdu1686kmp果题
kmp字符串匹配原理参考博客:https://blog.csdn.net/bqw18744018044/article/details/90516750 代码如下:(写一遍模板) #include&l ...
- 基本的访问控制列表ACL配置
摘要: 访问控制列表ACL (Access Control L ist)是由permit或 deny语句组成的一系列有顺序的规则集合,这些规则根据数据包的源地址.目的地址.源端口.目的端口等信息 来 ...
- linux入门系列20--Web服务之LNMP架构实战
作为本入门系列最后一篇文章,将演示如何在CentOS7环境下搭建LNMP环境来构建个人博客网站. 常见搭建网站的方式有LAMP.LNMP.IIS.Nginx.Tomcat等等,本文演示比较流行的基于L ...