最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

驗證碼

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

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

驗證碼效果如下圖:

驗證碼視圖

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

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

詳細(xì)文檔參考 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
 #引入隨機(jī)函數(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ù)繪制噪點(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)
 #定義驗證碼的備選值
 str1 = 'ABCD123EFGHIJK456LMNOPQRS789TUVWXYZ0'
 #隨機(jī)選取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,用于做進(jì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中定義請求驗證碼視圖的url

from . import viewsUtil

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

顯示驗證碼

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

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

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

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

<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標(biāo)簽

<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驗證碼(實(shí)例講解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • pyspark操作hive分區(qū)表及.gz.parquet和part-00000文件壓縮問題

    pyspark操作hive分區(qū)表及.gz.parquet和part-00000文件壓縮問題

    這篇文章主要介紹了pyspark操作hive分區(qū)表及.gz.parquet和part-00000文件壓縮問題,針對問題整理了spark操作hive表的幾種方式,需要的朋友可以參考下
    2021-08-08
  • Python Numpy實(shí)現(xiàn)計算矩陣的均值和標(biāo)準(zhǔn)差詳解

    Python Numpy實(shí)現(xiàn)計算矩陣的均值和標(biāo)準(zhǔn)差詳解

    NumPy(Numerical Python)是Python的一種開源的數(shù)值計算擴(kuò)展。這種工具可用來存儲和處理大型矩陣,比Python自身的嵌套列表結(jié)構(gòu)要高效的多。本文主要介紹用NumPy實(shí)現(xiàn)計算矩陣的均值和標(biāo)準(zhǔn)差,感興趣的小伙伴可以了解一下
    2021-11-11
  • 基于Django統(tǒng)計博客文章閱讀量

    基于Django統(tǒng)計博客文章閱讀量

    這篇文章主要介紹了基于Django統(tǒng)計博客文章閱讀量,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Python HTMLTestRunner如何下載生成報告

    Python HTMLTestRunner如何下載生成報告

    這篇文章主要介紹了Python HTMLTestRunner如何下載生成報告,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • DJANGO-ALLAUTH社交用戶系統(tǒng)的安裝配置

    DJANGO-ALLAUTH社交用戶系統(tǒng)的安裝配置

    django-allauth是集成了local用戶系統(tǒng)和social用戶系統(tǒng),其social用戶系統(tǒng)可以掛載多個賬戶。也是一個流行度非常高的Django user系統(tǒng),我們這里簡單介紹下,分享下個人的使用經(jīng)驗
    2014-11-11
  • python繪制多個曲線的折線圖

    python繪制多個曲線的折線圖

    這篇文章主要為大家詳細(xì)介紹了python繪制多個曲線的折線圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Python數(shù)據(jù)標(biāo)準(zhǔn)化的實(shí)例分析

    Python數(shù)據(jù)標(biāo)準(zhǔn)化的實(shí)例分析

    在本篇文章里小編給大家整理了關(guān)于Python數(shù)據(jù)標(biāo)準(zhǔn)化的實(shí)例內(nèi)容,有需要的朋友們可以測試學(xué)習(xí)下。
    2021-08-08
  • Django接收自定義http header過程詳解

    Django接收自定義http header過程詳解

    這篇文章主要介紹了Django接收自定義http header過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Python多線程編程(五):死鎖的形成

    Python多線程編程(五):死鎖的形成

    這篇文章主要介紹了Python多線程編程(五):死鎖的形成,本文講解了死鎖的概念、死鎖示例、避免死鎖的方法等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Python之DataFrame輸出為csv\txt\xlsx文件問題

    Python之DataFrame輸出為csv\txt\xlsx文件問題

    這篇文章主要介紹了Python之DataFrame輸出為csv\txt\xlsx文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評論

四平市| 崇阳县| 东丽区| 石狮市| 高密市| 嘉祥县| 会宁县| 家居| 潞城市| 阜新市| 铁岭县| 象山县| 梨树县| 青海省| 屏东县| 洛南县| 青铜峡市| 清原| 崇左市| 邳州市| 北京市| 常德市| 克什克腾旗| 嘉鱼县| 曲阳县| 江安县| 安徽省| 万山特区| 成武县| 察隅县| 阳朔县| 台南县| 宁德市| 巴南区| 乌拉特前旗| 陕西省| 武安市| 宝山区| 荆门市| 甘洛县| 蒲江县|