欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Django的python驗證碼(實例講解)

 更新時間:2017年10月23日 10:23:28   作者:17VZ  
下面小編就為大家?guī)硪黄贒jango的python驗證碼(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

驗證碼

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

使用驗證碼也是一種有效的防止crsf的方法

驗證碼效果如下圖:

驗證碼視圖

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

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

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

Image表示畫布對象

ImageDraw表示畫筆對象

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

代碼如下:

from django.http import HttpResponse
def verifycode(request):
 #引入繪圖模塊
 from PIL import Image, ImageDraw, ImageFont
 #引入隨機函數(shù)模塊
 import random
 #定義變量,用于畫面的背景色、寬、高
 bgcolor = (random.randrange(20, 100), random.randrange(
  20, 100), 255)
 width = 100
 height = 25
 #創(chuàng)建畫面對象
 im = Image.new('RGB', (width, height), bgcolor)
 #創(chuàng)建畫筆對象
 draw = ImageDraw.Draw(im)
 #調(diào)用畫筆的point()函數(shù)繪制噪點
 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)
 #定義驗證碼的備選值
 str1 = 'ABCD123EFGHIJK456LMNOPQRS789TUVWXYZ0'
 #隨機選取4個值作為驗證碼
 rand_str = ''
 for i in range(0, 4):
  rand_str += str1[random.randrange(0, len(str1))]
 #構(gòu)造字體對象
 font = ImageFont.truetype('FreeMono.ttf', 23)
 #構(gòu)造字體顏色
 fontcolor = (255, random.randrange(0, 255), random.randrange(0, 255))
 #繪制4個字
 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,用于做進一步驗證
 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中定義請求驗證碼視圖的url

from . import viewsUtil

urlpatterns = [
 url(r'^verifycode/$', viewsUtil.verifycode),
]

顯示驗證碼

•在模板中使用img標簽,src指向驗證碼視圖

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

•啟動服務器,查看顯示成功

•擴展:點擊“看不清,換一個”時,可以換一個新的驗證碼

<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'>看不清,換一個</span>

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

<form method='post' action='/verifycodeValid/'>
  <input type="text" name="vc">
  <img id='verifycode' src="/verifycode/?1" alt="CheckCode"/>
<span id='verifycodeChange'>看不清,換一個</span>
<br>
<input type="submit" value="提交">
</form>

驗證

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

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')

•配置驗證處理的url

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

以上這篇基于Django的python驗證碼(實例講解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python操作mongodb數(shù)據(jù)庫的方法詳解

    Python操作mongodb數(shù)據(jù)庫的方法詳解

    這篇文章主要介紹了Python操作mongodb數(shù)據(jù)庫的方法,結(jié)合實例形式詳細分析了Python下載、安裝pymongo及操作MongoDB數(shù)據(jù)庫相關實現(xiàn)技巧,需要的朋友可以參考下
    2018-12-12
  • PYTHON繪制雷達圖代碼實例

    PYTHON繪制雷達圖代碼實例

    這篇文章主要介紹了PYTHON繪制雷達圖代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • 在python中利用numpy求解多項式以及多項式擬合的方法

    在python中利用numpy求解多項式以及多項式擬合的方法

    今天小編就為大家分享一篇在python中利用numpy求解多項式以及多項式擬合的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python開發(fā)之Docker入門安裝部署教程

    python開發(fā)之Docker入門安裝部署教程

    這篇文章是一篇入門篇,主要給大家介紹了關于python開發(fā)中的Docker安裝部署,圖文方式展示了安裝的過程步驟,有需要的朋友可以參考下
    2021-09-09
  • python實現(xiàn)帶界面的井字棋小游戲

    python實現(xiàn)帶界面的井字棋小游戲

    這篇文章我們主要介紹的是python實現(xiàn)帶界面的井字棋小游戲,從安裝tkinter開始,然后初始化窗口,定義按鈕即查找獲勝條件,想具體了解的小伙伴可以參考下文,附有詳細代碼
    2021-09-09
  • python語言元素知識點詳解

    python語言元素知識點詳解

    在本篇文章中小編給大家分享了關于python語言元素的相關知識點以及實例代碼,需要的朋友們跟著學習下。
    2019-05-05
  • Mac上Python使用ffmpeg完美解決方案(避坑必看!)

    Mac上Python使用ffmpeg完美解決方案(避坑必看!)

    ffmpeg是一個強大的開源命令行多媒體處理工具,下面這篇文章主要給大家介紹了關于Mac上Python使用ffmpeg完美解決方案的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • Python實現(xiàn)批量下載SMAP數(shù)據(jù)

    Python實現(xiàn)批量下載SMAP數(shù)據(jù)

    在科學研究和數(shù)據(jù)分析中,獲取大規(guī)模的遙感數(shù)據(jù)是一個常見的任務,本文將詳細為大家介紹如何利用Python實現(xiàn)SMAP數(shù)據(jù)的批量下載,需要的可以參考下
    2023-12-12
  • fastcgi文件讀取漏洞之python掃描腳本

    fastcgi文件讀取漏洞之python掃描腳本

    這篇文章主要介紹了fastcgi文件讀取漏洞之python掃描腳本,需要的朋友可以參考下
    2017-04-04
  • Python的輸入,輸出和標識符詳解

    Python的輸入,輸出和標識符詳解

    這篇文章主要介紹了介紹了Python的輸入,輸出和標識符,有需要的朋友們可以參考一下,希望能給您帶來幫助
    2022-01-01

最新評論