前提:自定义一个数据模型和路由,这里只是响应函数的源码
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)