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) 






你可能感兴趣的:(python)