使用Python的pillow模块 random 模块随机生成验证码图片,并应用到Django项目中

安装pillow
$ pip3 install pillow
生成验证码图片
\vericode.py
from PIL import Image,ImageDraw,ImageFont,ImageFilter
import random
#随机码 默认长度=1
def random_code(lenght=1):
code = ''
for char in range(lenght):
code += chr(random.randint(65,90))
return code
#随机颜色 默认颜色范围【1,255】
def random_color(s=1,e=255):
return (random.randint(s,e),random.randint(s,e),random.randint(s,e))
#生成验证码图片
#length 验证码长度
#width 图片宽度
#height 图片高度
#返回验证码和图片
def veri_code(lenght=4,width=160,height=40):
#创建Image对象
image = Image.new('RGB',(width,height),(255,255,255))
#创建Font对象
font = ImageFont.truetype('Arial.ttf',32)
#创建Draw对象
draw = ImageDraw.Draw(image)
#随机颜色填充每个像素
for x in range(width):
for y in range(height):
draw.point((x,y),fill=random_color(64,255))
#验证码
code = random_code(lenght)
#随机颜色验证码写到图片上
for t in range(lenght):
draw.text((40*t+5,5),code[t],font=font,fill=random_color(32,127))
#模糊滤镜
image = image.filter(ImageFilter.BLUR)
return code,image
应用
编写Django应用下的视图函数
\views.py
from . import vericode.py
from io import BytesIO
from django.http import HttpResponse
def verify_code(request):
f = BytesIO()
code,image = vericode.veri_code()
image.save(f,'jpeg')
request.session['vericode'] = code
return HttpResponse(f.getvalue())
def submit_xxx(request):
if request.method == "POST":
vericode = request.session.get("vericode").upper()
submitcode = request.POST.get("vericode").upper()
if submitcode == vericode:
return HttpResponse('ok')
return HttpResponse('error')
这里使用了Django的session,需要在Django settings.py的INSTALLED_APPS中添加'django.contrib.sessions'(默认添加)
verify_code视图函数将验证码添加到session中和验证码图片一起发送给浏览器,当提交表单到submit_xxx()时,先从session中获取验证码,再对比从表单中的输入的验证码。
这里只是简单说明,url配置和前端代码未给出。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# python
# pillow验证码
# 验证码
# python生成验证码图片
# python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow
# Python3安装Pillow与PIL的方法
# 解决Python3用PIL的ImageFont输出中文乱码的问题
# 详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
# python3用PIL把图片转换为RGB图片的实例
# win10下python3.8的PIL库安装过程
# Python3用tkinter和PIL实现看图工具
# 解决python3 安装不了PIL的问题
# python3使用PIL添加中文文本水印背景方法详解
# 表单
# 滤镜
# 写到
# 大家多多
# 再对
# 并应
# 发送给
# 使用了
# lenght
# randint
# chr
# char
# code
# range
# veri_code
# height
# width
# return
# length
相关文章:
,如何利用word制作宣传手册?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
利用JavaScript实现拖拽改变元素大小
如何选择PHP开源工具快速搭建网站?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
XML的“混合内容”是什么 怎么用DTD或XSD定义
如何通过.red域名打造高辨识度品牌网站?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
建站之星伪静态规则如何设置?
如何选择高效可靠的多用户建站源码资源?
制作网站公司那家好,网络公司是做什么的?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
Android使用GridView实现日历的简单功能
如何快速完成中国万网建站详细流程?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
定制建站方案优化指南:企业官网开发与建站费用解析
香港服务器如何优化才能显著提升网站加载速度?
如何正确选择百度移动适配建站域名?
ppt制作免费网站有哪些,ppt模板免费下载网站?
,网站推广常用方法?
成都网站制作报价公司,成都工业用气开户费用?
建站之星如何优化SEO以实现高效排名?
哈尔滨网站建设策划,哈尔滨电工证查询网站?
平台云上自助建站如何快速打造专业网站?
南京网站制作费用,南京远驱官方网站?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
如何续费美橙建站之星域名及服务?
建站之星如何快速解决建站难题?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
如何用已有域名快速搭建网站?
如何配置WinSCP新建站点的密钥验证步骤?
油猴 教程,油猴搜脚本为什么会网页无法显示?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
建站之星CMS五站合一模板配置与SEO优化指南
存储型VPS适合搭建中小型网站吗?
宝塔Windows建站如何避免显示默认IIS页面?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
营销式网站制作方案,销售哪个网站招聘效果最好?
宿州网站制作公司兴策,安徽省低保查询网站?
如何正确下载安装西数主机建站助手?
全景视频制作网站有哪些,全景图怎么做成网页?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
如何制作网站标识牌,动态网站如何制作(教程)?
如何有效防御Web建站篡改攻击?
山东网站制作公司有哪些,山东大源集团官网?
如何选择美橙互联多站合一建站方案?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
C#如何使用XPathNavigator高效查询XML
如何在腾讯云免费申请建站?
*请认真填写需求信息,我们会在24小时内与您取得联系。