国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - 基于Django的python驗(yàn)證碼(實(shí)例講解)

基于Django的python驗(yàn)證碼(實(shí)例講解)

2020-12-13 00:0817VZ Python

下面小編就為大家?guī)硪黄贒jango的python驗(yàn)證碼(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

驗(yàn)證碼

在用戶注冊(cè)、登錄頁面,為了防止暴力請(qǐng)求,可以加入驗(yàn)證碼功能,如果驗(yàn)證碼錯(cuò)誤,則不需要繼續(xù)處理,可以減輕一些服務(wù)器的壓力

使用驗(yàn)證碼也是一種有效的防止crsf的方法

驗(yàn)證碼效果如下圖:

基于Django的python驗(yàn)證碼(實(shí)例講解)

驗(yàn)證碼視圖

新建viewsUtil.py,定義函數(shù)verifycode

此段代碼用到了PIL中的Image、ImageDraw、ImageFont模塊,需要先安裝Pillow(3.4.1)包,

詳細(xì)文檔參考 http://pillow.readthedocs.io/en/3.4.x/

Image表示畫布對(duì)象

ImageDraw表示畫筆對(duì)象

ImageFont表示字體對(duì)象,ubuntu的字體路徑為“/usr/share/fonts/truetype/freefont”

代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
from django.http import HttpResponse
def verifycode(request):
 #引入繪圖模塊
 from PIL import Image, ImageDraw, ImageFont
 #引入隨機(jī)函數(shù)模塊
 import random
 #定義變量,用于畫面的背景色、寬、高
 bgcolor = (random.randrange(20, 100), random.randrange(
  20, 100), 255)
 width = 100
 height = 25
 #創(chuàng)建畫面對(duì)象
 im = Image.new('RGB', (width, height), bgcolor)
 #創(chuàng)建畫筆對(duì)象
 draw = ImageDraw.Draw(im)
 #調(diào)用畫筆的point()函數(shù)繪制噪點(diǎn)
 for i in range(0, 100):
  xy = (random.randrange(0, width), random.randrange(0, height))
  fill = (random.randrange(0, 255), 255, random.randrange(0, 255))
  draw.point(xy, fill=fill)
 #定義驗(yàn)證碼的備選值
 str1 = 'ABCD123EFGHIJK456LMNOPQRS789TUVWXYZ0'
 #隨機(jī)選取4個(gè)值作為驗(yàn)證碼
 rand_str = ''
 for i in range(0, 4):
  rand_str += str1[random.randrange(0, len(str1))]
 #構(gòu)造字體對(duì)象
 font = ImageFont.truetype('FreeMono.ttf', 23)
 #構(gòu)造字體顏色
 fontcolor = (255, random.randrange(0, 255), random.randrange(0, 255))
 #繪制4個(gè)字
 draw.text((5, 2), rand_str[0], font=font, fill=fontcolor)
 draw.text((25, 2), rand_str[1], font=font, fill=fontcolor)
 draw.text((50, 2), rand_str[2], font=font, fill=fontcolor)
 draw.text((75, 2), rand_str[3], font=font, fill=fontcolor)
 #釋放畫筆
 del draw
 #存入session,用于做進(jìn)一步驗(yàn)證
 request.session['verifycode'] = rand_str
 #內(nèi)存文件操作
 import io
 buf = io.StringIO()
 #將圖片保存在內(nèi)存中,文件類型為png
 im.save(buf, 'png')
 #將內(nèi)存中的圖片數(shù)據(jù)返回給客戶端,MIME類型為圖片png
 return HttpResponse(buf.getvalue(), 'image/png')

配置url

在urls.py中定義請(qǐng)求驗(yàn)證碼視圖的url

?
1
2
3
4
5
from . import viewsUtil
 
urlpatterns = [
 url(r'^verifycode/$', viewsUtil.verifycode),
]

顯示驗(yàn)證碼

•在模板中使用img標(biāo)簽,src指向驗(yàn)證碼視圖

?
1
<img id='verifycode' src="/verifycode/" alt="CheckCode"/>

•啟動(dòng)服務(wù)器,查看顯示成功

•擴(kuò)展:點(diǎn)擊“看不清,換一個(gè)”時(shí),可以換一個(gè)新的驗(yàn)證碼

?
1
2
3
4
5
6
7
8
9
10
<script type="text/javascript" src="/static/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
  $(function(){
    $('#verifycodeChange').css('cursor','pointer').click(function() {
      $('#verifycode').attr('src',$('#verifycode').attr('src')+1)
    });
  });
</script>
<img id='verifycode' src="/verifycode/?1" alt="CheckCode"/>
<span id='verifycodeChange'>看不清,換一個(gè)</span>

•為了能夠?qū)崿F(xiàn)提交功能,需要增加form和input標(biāo)簽

?
1
2
3
4
5
6
7
<form method='post' action='/verifycodeValid/'>
  <input type="text" name="vc">
  <img id='verifycode' src="/verifycode/?1" alt="CheckCode"/>
<span id='verifycodeChange'>看不清,換一個(gè)</span>
<br>
<input type="submit" value="提交">
</form>

驗(yàn)證

•接收請(qǐng)求的信息,與session中的內(nèi)容對(duì)比

?
1
2
3
4
5
6
7
8
from django.http import HttpResponse
 
def verifycodeValid(request):
  vc = request.POST['vc']
  if vc.upper() == request.session['verifycode']:
    return HttpResponse('ok')
  else:
    return HttpResponse('no')

•配置驗(yàn)證處理的url

?
1
2
3
urlpatterns = [
  url(r'^verifycodeValid/$', views.verifycodeValid),
]

以上這篇基于Djangopython驗(yàn)證碼(實(shí)例講解)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://www.cnblogs.com/venz-seventeen/p/7709110.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 成人在线免费观看 | 毛片大全 | 中文字幕在线影院 | 国产欧美日韩精品一区 | 亚洲黄色av | 91视频观看 | 国产一区二区三区在线视频观看 | 最新免费av网站 | 国产精品日日 | 久久久91精品国产一区二区三区 | 午夜资源 | 国产精品久久久久久久久久久久冷 | 久久尤物免费一区二区三区 | 国产 日韩 欧美 中文 在线播放 | 亚洲欧美一级久久精品 | 国产精品久久久久久久7电影 | 日本韩国欧美一区 | 国产精品片aa在线观看 | 国产一区在线视频观看 | 久久国 | 日韩国产在线观看 | 亚洲香蕉在线观看 | 国产精品视频一区二区三区四 | 久操色 | 亚洲精品片 | 寡妇性视频免费高清播放器 | 精品视频一区二区三区四区 | 国产精品久久久久aaaa九色 | 日韩成人在线视频 | 国产欧美一区二区精品性色 | 在线视频亚洲 | 久久福利电影 | 国产美女网站视频 | 国产婷婷精品av在线 | 成人日韩在线观看 | 欧美综合在线观看 | 国产成人a亚洲精品 | 国产嫩草91 | 国产在线一区二区三区 | 欧美精品一区二区视频 | 999精品视频 |