python编写四位数验证码

def verifycode(request):#引入绘图模块from PIL import Image, ImageDraw, ImageFont#引入随机函数模块import random#定义变量,用于画面的背景色、宽、高bgcolor = (random.randrange(20, 100), random.randrange(20, 100), random.randrange(20, 100))width = 100height = 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(r'C:\Windows\Fonts\AdobeArabic-Bold.otf', 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], font=font, fill=fontcolor1)draw.text((25, 2), rand_str[1], font=font, fill=fontcolor2)draw.text((50, 2), rand_str[2], font=font, fill=fontcolor3)draw.text((75, 2), rand_str[3], font=font, fill=fontcolor4)#释放画笔del draw#存入session,用于做进一步验证# request.session['verifycode'] = rand_str#内存文件操作import iobuf = io.BytesIO()#将图片保存在内存中,文件类型为pngim.save(buf, 'png')#将内存中的图片数据返回给客户端,MIME类型为图片pngreturn HttpResponse(buf.getvalue(), 'image/png')
  •  图为示例:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php 计算数据偏离度,关于偏离度的测算方法

2015年6月技术总结——关于偏离度的测算方法研究院公用事业部 路璐引言《原理》中说“偏离度是指每一种偿债来源与财富创造能力的距离,所体现的是偿债来源对债务安全的保障程度,唯有通过揭示偿债来源与财富创造能力偏离度才能真正区别每一种偿债来源的风…

Django中celery配置总结

情景: 用户发起request,并等待response返回。在本些views中,可能需要执行一段耗时的程序,那么用户就会等待很长时间, 造成不好的用户体验,比如发送邮件、手机验证码等。 使用celery后,情况就不…

AngularJs ng-repeat限制循环次数

重复数组&#xff1a;<ul ng-initname[1,2,3,3]><li ng-repeat"name in name track by $index">{{name}}</li> </ul> 对象&#xff1a; <ul ng-initobj{ a:"aaa", b:"bbb", c:"ccc" }><li ng-repeat…

qml demo分析(customgeometry-贝塞尔曲线)

一、效果展示 本篇文章还是带来一个简单的qt示例分析&#xff0c;且看图1效果。 图1 贝塞尔曲线 二、源码分析 该示例代码所在目录quick\scenegraph\customgeometry&#xff0c;感兴趣的同学可以自己去找&#xff0c;这篇文章我还是主要讲解源码&#xff0c;不涉及其他方面。 废…

php 打包上传的文件,PHP单文件上传原理及上传函数的打包

PHP单文件上传原理及上传函数的封装服务器(临时文件)——>指定目录,当文件进入服务器时它就是临时文件了,这时操作中要用临时文件的名称tmp_name。//在客户端设置上传文件的限制(文件类型和大小)是不安全的&#xff0c;因为客户能通过源代码修改限制&#xff0c;所以在服务端…

celery AttributeError: 'str' object has no attribute 'items'

AttributeError: str object has no attribute items python manage.py celery worker --loglevelinfo 查了好久发现原来是因为以前下的redis版本过高&#xff08; 3.0.1 &#xff09;&#xff0c;重装redis pip install redis2.10.6

equals和==的区别(转)

基本数据类型&#xff0c;也称原始数据类型。byte,short,char,int,long,float,double,boolean&#xff0c;他们之间的比较&#xff0c;应用双等号&#xff08;&#xff09;,比较的是他们的值。 复合数据类型(类) 当他们用&#xff08;&#xff09;进行比较的时候&#xff0c;…

Python 中的range,以及numpy包中的arange函数

range函数函数说明&#xff1a; range(start, stop[, step]) -> range object&#xff0c;根据start与stop指定的范围以及step设定的步长&#xff0c;生成一个序列。  参数含义&#xff1a;start:计数从start开始。默认是从0开始。例如range&#xff08;5&#xff09;等价…

php角色权限安全,php – 安全的chmod权限?

新创建的文件和目录的默认权限由umask环境变量设置.文件的所有者和root可以更改权限.如果您不需要在应用程序中使用chmod,请将其保留在禁用列表中.你应该看看安全性的方式是&#xff1a;现在比我更聪明的人让chmod成为我应用程序中更安全的部分之一.因此,我将花费我的时间使其他…

namespace! 报错

在工程文件中url 定义namespace需要 from django.contrib import admin from django.urls import path,include from django.conf.urls import url urlpatterns [path(admin/, admin.site.urls),url(r^liu/,include(myApp.urls,namespaceapp)), ] 在myApp 的urls中 加这句 a…

test.php.bak,MongoDB热备份工具:解决官方版备份缺陷

贺春旸&#xff0c;凡普金科DBA团队负责人&#xff0c;《MySQL管理之道&#xff1a;性能调优、高可用与监控》第一、二版作者&#xff0c;曾任职于中国移动飞信、安卓机锋网。致力于MariaDB、MongoDB等开源技术的研究&#xff0c;主要负责数据库性能调优、监控和架构设计。工具…

zookeeper工作原理、安装配置、工具命令简介

1 Zookeeper简介Zookeeper 是分布式服务框架&#xff0c;主要是用来解决分布式应用中经常遇到的一些数据管理问题&#xff0c;如&#xff1a;统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等等。 ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序…

流式大数据处理的三种框架:Storm,Spark和Samza

许多分布式计算系统都可以实时或接近实时地处理大数据流。本文将对三种Apache框架分别进行简单介绍&#xff0c;然后尝试快速、高度概述其异同。 Apache Storm 在Storm中&#xff0c;先要设计一个用于实时计算的图状结构&#xff0c;我们称之为拓扑&#xff08;topology&#x…

models.ForeignKey( ,on_delete=models.CASCADE)    # 关联外键

# 关联外键 sgrade models.ForeignKey("Grades",on_deletemodels.CASCADE) 版本跟新后忘记加on_deletemodels.CASCADE 报错困扰了很久 多读报错信息 from django.db import models# Create your models here. class Grades(models.Model):gname models.Cha…

java 产生无重复的随机数,Java创建无重复的随机数

小编典典最简单的方法是创建一个可能数字的列表(1..20或任何数字)&#xff0c;然后用对其进行混洗Collections.shuffle。然后&#xff0c;只需考虑你想要的许多元素。如果你的范围最终等于你需要的元素数量(例如&#xff0c;用于洗牌的卡片)&#xff0c;则这非常好。如果你想要…

linux_bash_shell_cheat_sheet(自译)

【说明】 发现错误或不足请务必联系我&#xff01;&#xff01;&#xff01; linux_bash_shell_cheat_sheet.pdf &#xff08;英文原本以及译本下载&#xff0c;链接失效请私信或邮箱联系&#xff09; 转载于:https://www.cnblogs.com/15ho/p/5947534.html

Day04-循环和列表

循环和列表 一、循环(***) 1.1 概念 广义&#xff1a;一个周期现象或者重复出现的情况&#xff0c;这种状态被称为循环 狭义&#xff1a;在满足条件的情况下&#xff0c;反复执行某一段代码&#xff0c;在编程语言中出现的这种现象被称为循环。被反复执行的这段代码被称为循环…

热血街头Java,下载_我爱法语 V3.01 多国语言版_6z6z下载站

我爱法语是一款功能强大的法语电子词典工具。融合了法汉&#xff0c;汉法&#xff0c;法法&#xff0c;英法&#xff0c;法英&#xff0c;英汉&#xff0c;法意等各类词库。该工具使用灵活&#xff0c;操作简单&#xff0c;充分吸收了法汉、汉法、法法、英法、法英、英汉、法意…

【demo练习二】:WPF依赖属性的练习

2016-10-11 依赖属性demo小样&#xff1a; 要求&#xff1a;在窗口中点击按钮&#xff0c;利用设置“依赖属性”把Label和TextBox控件里的属性值进行改变。 MainWindow.xaml代码&#xff1a; <Window x:Class"依赖属性1.MainWindow" xmlns"http://schemas.m…

BZOJ 1087 [SCOI2005]互不侵犯King ——状压DP

【题目分析】 沉迷水题&#xff0c;吃枣药丸。 【代码】 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define F(i,j,k) for (int ij;i<k;i) #define ll long long int cot[512],c1[512]…