国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Django實現登錄隨機驗證碼的示例代碼

2020-02-15 21:55:59
字體:
來源:轉載
供稿:網友

登錄驗證碼是每個網站登錄時的基本標配,網上也有很多相應的文章, 但是從生成驗證碼到 應用到自己的網站上的全步驟,并沒有看到很多, 為了節約大家的時間,我把整體步驟寫下來, 即拿即用哈

1. 生成隨機驗證碼

 #_*_coding:utf-8_*_from PIL import Image,ImageDraw,ImageFont,ImageFilterimport randomimport math, string#字體的位置,不同版本的系統會有不同font_path = '/Library/Fonts/Arial.ttf'#font_path = '/Library/Fonts/Hanzipen.ttc'#生成幾位數的驗證碼number = 4#生成驗證碼圖片的高度和寬度size = (100,30)#背景顏色,默認為白色bgcolor = (255,255,255)#字體顏色,默認為藍色fontcolor = (0,0,255)#干擾線顏色。默認為紅色linecolor = (255,0,0)#是否要加入干擾線draw_line = True#加入干擾線條數的上下限line_number = (1,5)def gen_text():  source = list(string.ascii_letters)  for index in range(0,10):    source.append(str(index))  return ''.join(random.sample(source,number))#number是生成驗證碼的位數#用來繪制干擾線def gene_line(draw,width,height):  begin = (random.randint(0, width), random.randint(0, height))  end = (random.randint(0, width), random.randint(0, height))  draw.line([begin, end], fill = linecolor)def gene_code(save_path,filename):  width,height = size #寬和高  image = Image.new('RGBA',(width,height),bgcolor) #創建圖片  font = ImageFont.truetype(font_path,25) #驗證碼的字體和字體大小  #font = ImageFont.truetype(25) #驗證碼的字體和字體大小  draw = ImageDraw.Draw(image) #創建畫筆  #text = "我是中國人" #生成字符串  text = gen_text() #生成字符串  print(text)  font_width, font_height = font.getsize(text)  draw.text(((width - font_width) / number, (height - font_height) / number),text,/    font= font,fill=fontcolor) #填充字符串  if draw_line:    gene_line(draw, width, height)    gene_line(draw, width, height)    gene_line(draw, width, height)    gene_line(draw, width, height)  image = image.transform((width + 20, height +10), Image.AFFINE, (1, -0.3, 0, -0.1, 1, 0), Image.BILINEAR) # 創建扭曲  image = image.filter(ImageFilter.EDGE_ENHANCE_MORE) # 濾鏡,邊界加強  image.save('%s/%s.png' %(save_path,filename)) # 保存驗證碼圖片  print("savepath:",save_path)  return textif __name__ == "__main__":  gene_code('/tmp','test') #會把生成的圖片存成/tmp/test.png

 2. 如何應用到你的django項目中

整個驗證碼的流程如下
1.用戶訪問登錄頁面,你的后臺程序在給用戶返回登錄頁面時,同時生成了驗證碼圖片
2.用戶輸入賬戶信息和驗證碼數字,提交表單
3.后臺判斷用戶輸入的驗證碼和你生成的圖片信息是否一致,如果一致,就代表驗證碼是沒有問題的

問題就卡在第3步,你在第1步生成驗證碼并返回給用戶后,由于一會用戶還需要把這個驗證碼提交過來,你在后臺就需要拿用戶輸入的和你之前生成 的驗證碼進行對比是否相等,

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南部县| 库尔勒市| 沛县| 浮山县| 潞城市| 东方市| 宽甸| 芦溪县| 天全县| 沙河市| 云南省| 越西县| 阜城县| 柳河县| 涡阳县| 区。| 富裕县| 峨眉山市| 社会| 木兰县| 修水县| 砀山县| 临沂市| 卓尼县| 平湖市| 偃师市| 怀来县| 保定市| 阜南县| 武夷山市| 安西县| 武乡县| 晋宁县| 榆林市| 潜山县| 冕宁县| 佛教| 云霄县| 油尖旺区| 丰台区| 三亚市|