在用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