python如何生成验证码

前提:自定义一个数据模型和路由,这里只是响应函数的源码


1.首先安装pillow第三方库


2.生成验证码
def getvcode(request):
	# 随机生成验证码
    population = string.ascii_letters+string.digits
    letterlist = random.sample(population,4)
    vcode = ''.join(letterlist)


    # 保存该用户的验证码
    request.session['vcode']=vcode


    # 绘制验证码
    # 创建176*50大小的画布
    image = Image.new('RGB',(176,50),color=getRandomColor())
	
	#创建画笔
	draw=ImageDraw.Draw(image)
	
	#绘制随机生成的验证码(此处需要自己在static文阿件夹下放置fonts的静态资源)
	path=os.path.join(BASE_DIR,'static','fonts','ADOBEARABIC-BOLDITALIC.OTF')
	font=ImageFont.truetype(path,50)
	
	for i in range(len(vcode))
		draw.text((20+40*i,0)),vcode[i],fill=getRandomColor(),font=font)
		
	#添加噪声
	for i in range(5000):
		position=(random.randint(0,176),random.randint(0,50))
		draw=point(position,fill=getRandomColor())
		
	#返回验证码字节数据
	#创建字节容器
	buffer=io.BytesIo()
	
	#将画布放置到容器中
	image.save(buffer,'png')
	
	#返回容器内的字节
	return HttpResponse(buffer.getvalue(),'image/png')
3.定义一个随机生成颜色的函数
def getRandomColor():
		red=random.randint(0,255)
		green=random.randint(0,255)
		blue=random.randint(0,255)
		return(red,green,blue) 






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值