国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Django實(shí)現(xiàn)隨機(jī)圖形驗(yàn)證碼的示例

瀏覽:16日期:2024-09-20 14:15:35

實(shí)現(xiàn)效果:點(diǎn)擊右邊圖片驗(yàn)證碼會(huì)變

Django實(shí)現(xiàn)隨機(jī)圖形驗(yàn)證碼的示例

前端代碼:

<div class='container'> <div class='row'> <div class='col-md-6'> <label for='yzm_id'>驗(yàn)證碼:</label> <input type='text' placeholder='' name='yzm'> </div> <div class='col-md-6'> <img id=’yzm_img_id’ src='https://rkxy.com.cn/yzm/' alt='' style='width: 260px;height: 40px'> </div> </div> <div>

后端代碼:

from PIL import Image,ImageDraw,ImageFontfrom io import BytesIO,StringIO#色彩的設(shè)置為(*,*,*),所以隨機(jī)返回三個(gè)數(shù)def r_num(number): #number為2指的是背景顏色,把背景顏色和字體顏色分開(kāi),不然當(dāng)顏色一樣時(shí),不容易看到 if number==2: return random.randint(0,128),random.randint(0,128),random.randint(0,128) #number==1指的是字體顏色,字體顏色深一些比較養(yǎng)眼 if number == 1: return random.randint(128, 255), random.randint(128, 255), random.randint(128, 255)def yzm(request): #創(chuàng)建一個(gè)Image對(duì)象,‘RGB’是顏色的模式。第二個(gè)參數(shù)是驗(yàn)證碼的大小。第三個(gè)參數(shù)是三個(gè)隨機(jī)數(shù),當(dāng)然也用英語(yǔ)單詞指定顏色,比如red,這里為了隨機(jī)性選擇了用三個(gè)數(shù)字 yzm_img=Image.new('RGB',(260,40),r_num(1)) #為yzm_img對(duì)象創(chuàng)建一個(gè)畫(huà)筆 draw=ImageDraw.Draw(yzm_img) #指定字體的格式,ttf文件自己在網(wǎng)上下載,放入static文件夾中,40指的是字體的大小 font=ImageFont.truetype(’static/1.ttf’,40) #存放驗(yàn)證碼 code=’’ #循環(huán)5次,所以驗(yàn)證碼是5位 for i in range(5): #隨機(jī)0到9的數(shù)字 random_num=str(random.randint(0,9)) #隨機(jī)65到90的數(shù)字,chr是把數(shù)字對(duì)比ASCLL碼表轉(zhuǎn)為字母。65到90是大寫(xiě)字母 random_up=str(chr(random.randint(65,90))) #同上,隨機(jī)小寫(xiě)字母 random_low=str(chr(random.randint(97,122)))#從三個(gè)字符中隨機(jī)選取出一個(gè) random_code=random.choice([random_num,random_up,random_low]) #把字符寫(xiě)入圖片。第一個(gè)參數(shù)(x,y),坐標(biāo),如果坐標(biāo)位置寫(xiě)死,那么將會(huì)全部擠到一起,第二個(gè)參數(shù),指定寫(xiě)入的字符。第三參數(shù)指定字符的格式 draw.text((45*i,-5),random_code,r_num(2),font) code+=random_code io_obj=BytesIO() #把圖片存放到內(nèi)存空間中 yzm_img.save(io_obj,’png’) #給session中添加驗(yàn)證碼 request.session[’code’]=code #返回二進(jìn)制數(shù)據(jù) return HttpResponse(io_obj.getvalue())

現(xiàn)在刷新就可以刷新驗(yàn)證碼了

還差點(diǎn)擊驗(yàn)證碼就能更換驗(yàn)證碼

前端腳本代碼:

這里這么寫(xiě)是因?yàn)橹灰诘刂泛竺婕由献址敲淳退⑿聢D片

$(’#yzm_img_id’).click(function () { var path2 = $(this).attr(’src’); $(this).attr(’src’, path2 += ’?’) });

以上就是Django實(shí)現(xiàn)隨機(jī)圖形驗(yàn)證碼的示例的詳細(xì)內(nèi)容,更多關(guān)于Django 圖形驗(yàn)證碼的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Django
相關(guān)文章:
主站蜘蛛池模板: 一级特黄国产高清毛片97看片 | 国产一区二区三区免费在线观看 | 欧美成人精品一级高清片 | 一区二区网站 | 全部在线播放免费毛片 | 成在线人免费视频 | 欧美一级aa天码毛片 | 九九九九在线精品免费视频 | 日韩欧美一区二区三区在线 | 亚洲综合中文 | 手机看片神马午夜片 | 性欧美videofree中文字幕 | 操亚洲 | 国产精选91热在线观看 | 亚洲欧美日本国产综合在线 | 草草免费观看视频在线 | 久久精品国产免费看久久精品 | 2020夜夜操| 久久久久久久久久久久久久久久久久 | 亚洲香蕉久久一区二区三区四区 | 国产精品亚洲一区二区在线观看 | 综合久久久 | 男女朋友做爽爽爽免费视频网 | 9lporm自拍视频在线 | 成人免费网站视频www | 国产高清精品一区 | 中国一级毛片免费观看 | 国产农村乱 | 九九在线偷拍视频在线播放 | 国产美女白丝袜精品_a不卡 | 国内精品伊人久久 | 上海一级毛片 | 污全彩肉肉无遮挡彩色 | 中国hd高清╳xxx | 在线满18网站观看视频 | 人人公开免费超级碰碰碰视频 | 免费久久精品视频 | 91精品自在拍精选久久 | 久久久香蕉 | 免费看操片 | 在线成人欧美 |