1. 程式人生 > >django--驗證碼功能實現

django--驗證碼功能實現

save size 路由 登錄 session range 需要 圖片庫 spa

首先建立驗證碼的視圖函數
1需要安裝pillow庫

#導入繪圖庫
from PIL import ImageDraw
#導入繪圖字體庫
from PIL import ImageFont
#導入圖片庫
from PIL import Image
#導入io庫
import io
#導入隨機庫
import random

1,定義驗證碼圖片

#定義隨機顏色方法
def get_random_color():
    
    R = random.randrange(255)
    G = random.randrange(255)
    B 
= random.randrange(255) return (R,G,B) #定義隨機驗證碼 def test_captcha(request): #定義背景顏色 bg_color = get_random_color() #定義畫布大小 寬,高 img_size = (150,80) #定義畫筆 顏色種類,畫布,背景顏色 image = Image.new("RGB",img_size,bg_color) #定義畫筆對象 圖片對象,顏色類型 draw = ImageDraw.Draw(image,
RGB) #定義隨機字符 source = 0123456789asdfghjkl #定義四個字符 #定義好容器,用來接收隨機字符串 code_str = ‘‘ for i in range(4): #獲取隨機顏色 字體顏色 text_color = get_random_color() #獲取隨機字符串 tmp_num = random.randrange(len(source)) #獲取字符集 random_str = source[tmp_num]
#將隨機生成的字符串添加到容器中 code_str += random_str #將字符畫到畫布上 坐標,字符串,字符串顏色,字體 #導入系統真實字體,字號 my_font = ImageFont.truetype("c:\\windows\\Fonts\\arial.ttf",20) draw.text((10+30*i,20),random_str,text_color,font=my_font) #使用io獲取一個緩存區 buf = io.BytesIO() #將圖片保存到緩存區 image.save(buf,png) #將隨機碼存儲到session中 request.session[code] = code_str #第二個參數聲明頭部信息 return HttpResponse(buf.getvalue(),image/png)

2前端定義驗證碼圖片和輸入輸入驗證碼

{# 利用clcik時間來刷新驗證碼 #}{# 通過樣式來改變懸停時的圖標 #}
        <img style="cursor:pointer;" src="/captcha" onclick=‘this.src=this.src+"?"+Math.random()‘  />  
        <input name=‘code‘ type="text" />

3.定義驗證碼路由,並在登錄時根據前端name 獲取用戶輸入的驗證碼與存入session的驗證碼比對實現其功能

django--驗證碼功能實現