在用django写论坛的时候,须要有登陆及注册功能。前端
故就登陆界面后端须要生成随机验证码并传值给前端的代码进行编写以下。python
验证码生成png须要调用到python的图形库git
生成注册码imgdjango
import string import sys import random from PIL import Image,ImageDraw,ImageFont '''生成随机验证码''' def Capture(size=4, chars=string.ascii_uppercase + string.digits): return ''.join(random.choice(chars) for _ in range(size)) '''验证码生成图片''' def Capture_img(): # 定义使用Image类实例化一个长为120px,宽为30px,基于RGB的(255,255,255)颜色的图片 img1 = Image.new(mode="RGB", size=(120, 30), color=(255, 255, 255)) # 实例化一支画笔 draw1 = ImageDraw.Draw(img1, mode="RGB") # 定义要使用的字体 font1 = ImageFont.truetype('arial.ttf', 36) color1 = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) draw1.text([24,0], Capture(), color1, font=font1) # 把生成的图片保存为"capture2.png"格式 pngPath=sys.path[1]+"\\static\capture2.png" print(pngPath) with open(pngPath, "wb") as f: img1.save(f, format="png")
效果如:后端
自动化测试session
因为验证码是随机生成的且存储在session内,因此若是测试要进行自动化测试,方案:dom
1.注释验证码的验证,当须要测试验证码功能时,请独立验证测试
2.修改源码,将生成的验证码存储备份到其余可获取的地方字体
3.调用pyhton的验证码识别类: Pillow(python图像处理库)、OpenCV(高级图像处理库)、pytesseract(识别库)spa
第三点仅适用本方式实现的验证码,若是前端是使用滑动等图形效果的,暂时不适用
且第三点从成本方案上说,不如1/2点快捷。
生成注册码img