使用Python的pillow模塊 random 模塊隨機生成驗證碼圖片,并應用到Django項目中
安裝pillow$ pip3 install pillow生成驗證碼圖片
vericode.py from PIL import Image,ImageDraw,ImageFont,ImageFilter import random #隨機碼 默認長度=1 def random_code(lenght=1): code = "" for char in range(lenght): code += chr(random.randint(65,90)) return code #隨機顏色 默認顏色范圍【1,255】 def random_color(s=1,e=255): return (random.randint(s,e),random.randint(s,e),random.randint(s,e)) #生成驗證碼圖片 #length 驗證碼長度 #width 圖片寬度 #height 圖片高度 #返回驗證碼和圖片 def veri_code(lenght=4,width=160,height=40): #創建Image對象 image = Image.new("RGB",(width,height),(255,255,255)) #創建Font對象 font = ImageFont.truetype("Arial.ttf",32) #創建Draw對象 draw = ImageDraw.Draw(image) #隨機顏色填充每個像素 for x in range(width): for y in range(height): draw.point((x,y),fill=random_color(64,255)) #驗證碼 code = random_code(lenght) #隨機顏色驗證碼寫到圖片上 for t in range(lenght): draw.text((40*t+5,5),code[t],font=font,fill=random_color(32,127)) #模糊濾鏡 image = image.filter(ImageFilter.BLUR) return code,image應用
編寫Django應用下的視圖函數
views.py from . import vericode.py from io import BytesIO from django.http import HttpResponse def verify_code(request): f = BytesIO() code,image = vericode.veri_code() image.save(f,"jpeg") request.session["vericode"] = code return HttpResponse(f.getvalue()) def submit_xxx(request): if request.method == "POST": vericode = request.session.get("vericode").upper() submitcode = request.POST.get("vericode").upper() if submitcode == vericode: return HttpResponse("ok") return HttpResponse("error")
這里使用了Django的session,需要在Django settings.py的INSTALLED_APPS中添加"django.contrib.sessions"(默認添加)
verify_code視圖函數將驗證碼添加到session中和驗證碼圖片一起發送給瀏覽器,當提交表單到submit_xxx()時,先從session中獲取驗證碼,再對比從表單中的輸入的驗證碼。
這里只是簡單說明,url配置和前端代碼未給出。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/40850.html
摘要:運行結果如果運行結果一致則證明安裝成功。上一篇文章網絡爬蟲實戰請求庫安裝下一篇文章網絡爬蟲實戰數據庫的安裝 上一篇文章:Python3網絡爬蟲實戰---2、請求庫安裝:GeckoDriver、PhantomJS、Aiohttp下一篇文章:Python3網絡爬蟲實戰---數據庫的安裝:MySQL、MongoDB、Redis 抓取下網頁代碼之后,下一步就是從網頁中提取信息,提取信息的方式有...
摘要:但今年各種搶票軟件的橫行,還有官方出的加速包,導致連黃牛都不敢保證能買到票。今天我就給大家介紹一個開源的搶票程序,親測有效我身邊已經有很多好友,通過這個程序搶到車票了。這個庫是用來在上同步校準當地時間的。 showImg(https://segmentfault.com/img/remote/1460000017814865); 閱讀文本大概需要 6.6 分鐘。 又到了一年一度的搶票大...
摘要:因此,本文將會以一些正經的嚴謹的有深度的大概吧的課題,慢慢的接觸人工智能的相關知識。 Before The Beginning ????近年,技術圈炒的最火的兩個話(ba)題(gua)不外乎就是人工智障智能以及炒幣區塊鏈了,這個系列文章我主要以一個小菜鳥的角度一步一步的對人工智能的相關知識做一點了解,也算是一個顫顫巍巍追著AI浪潮公交車的社會主義五好青年,咳咳,扯遠了...其實對于人工...
閱讀 2048·2021-11-08 13:22
閱讀 2509·2021-09-04 16:40
閱讀 1153·2021-09-03 10:29
閱讀 1718·2019-08-30 15:44
閱讀 2125·2019-08-30 11:13
閱讀 2793·2019-08-29 17:07
閱讀 1970·2019-08-29 14:22
閱讀 1252·2019-08-26 14:00