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

Django框架驗(yàn)證碼用法實(shí)例分析

 更新時(shí)間:2019年05月10日 11:10:56   作者:微信1257309054  
這篇文章主要介紹了Django框架驗(yàn)證碼用法,結(jié)合實(shí)例形式分析了Python Django框架驗(yàn)證碼的功能、實(shí)現(xiàn)方法及相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Django框架驗(yàn)證碼用法。分享給大家供大家參考,具體如下:

驗(yàn)證碼

1、作用

  • 在用戶登錄,注冊(cè)以及一些敏感操作的時(shí)候,我們?yōu)榱朔乐狗?wù)器被暴力請(qǐng)求,或爬蟲爬取,我們可以使用驗(yàn)證碼進(jìn)行過濾,減輕服務(wù)器的壓力。
  • 驗(yàn)證碼需要使用繪圖 Pillow
    • pip3 install Pillow
    • 核心API
    • Image
      • 需要模式
      • 尺寸
      • 背景色
    • ImageDraw
      • 綁定畫布
      • 模式
      • 封裝了繪制的API
      • text
      • point
      • line
      • arch
    • ImageFont
      • 手動(dòng)指定字體

2、業(yè)務(wù)流程

繪制驗(yàn)證碼圖片

background = (10,20,30) // RGB顏色

初始化畫布

image = Image.new(‘RGB',(100,50),background)

獲取畫布中畫筆對(duì)象

draw = ImageDraw.Draw(image)

繪制驗(yàn)證碼,隨機(jī)四個(gè)

font = ImageFont.truetype(‘path',size)
fontcolor = (20,40,60)
draw.text((x,y),'R',font,fontcolor)

返回驗(yàn)證碼內(nèi)容

# 刪除畫筆
del draw
#保存圖片到BytesIO對(duì)象
Import io
buf = io.BytesIO()
image.save(buf,'png')
#返回BytesIO中的內(nèi)容
return HttpResponse(buf.getvalue(),'image/png')

3、代碼范例

html頁(yè)面

<form method="post" action="{% url 'sitesApp:login' %}">
  {% csrf_token %}
    <div class="login">
      <div class="input-group">
       <span class="input-group-addon" id="basic-addon1">用戶名</span>
       <input type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1" name="uName">
      </div>
      <div class="input-group">
       <span class="input-group-addon" id="basic-addon1">密&nbsp;&nbsp;&nbsp;&nbsp;碼</span>
       <input type="text" class="form-control" placeholder="Password" aria-describedby="basic-addon1" name="uPswd">
      </div>
      <div class="input-group">
       <span class="input-group-addon" id="basic-addon1">驗(yàn)證碼</span>
       <input type="text" class="form-control" placeholder="Auth code" aria-describedby="basic-addon1" name="uCode">
      </div>
      <div class="vcode">
        <img src="/app/getvcode/" id="vcode">
      </div>
      <input type="submit" class="loginBtn" value="登 錄"><br>
    </div>
  </form>
  <script type="text/javascript">
    $(function () {
      $('#vcode').click(function () {
        $(this).attr('src',"/app/getvcode"+Math.random())
      })
    })
  </script>

views視圖

'''
生成并返回驗(yàn)證碼
'''
def getvcode(request):
  # 隨機(jī)生成驗(yàn)證碼
  population = string.ascii_letters+string.digits
  letterlist = random.sample(population,4)
  vcode = ''.join(letterlist)
  # 保存該用戶的驗(yàn)證碼
  request.session['vcode']=vcode
  # 繪制驗(yàn)證碼
  # 需要畫布,長(zhǎng)寬顏色
  image = Image.new('RGB',(176,60),color=getRandomColor())
  # 創(chuàng)建畫布的畫筆
  draw = ImageDraw.Draw(image)
  # 繪制文字,字體所在位置
  path = os.path.join(BASE_DIR,'static','fonts','ADOBEARABIC-BOLDITALIC.OTF')
  font = ImageFont.truetype(path,50)
  for i in range(len(vcode)):
    draw.text((20+40*i,0),vcode[i],fill=getRandomColor(),font=font)
  # 添加噪聲
  for i in range(500):
    position = (random.randint(0,176),random.randint(0,50))
    draw.point(position,fill=getRandomColor())
  # 返回驗(yàn)證碼字節(jié)數(shù)據(jù)
  # 創(chuàng)建字節(jié)容器
  buffer = io.BytesIO()
  # 將畫布內(nèi)容丟入容器
  image.save(buffer,'png')
  # 返回容器內(nèi)的字節(jié)
  return HttpResponse(buffer.getvalue(),'image/png')
# 獲取隨機(jī)顏色
def getRandomColor():
  red = random.randint(0,255)
  green = random.randint(0,255)
  blue = random.randint(0,255)
  return (red,green,blue)

希望本文所述對(duì)大家基于Django框架的Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • win10下tensorflow和matplotlib安裝教程

    win10下tensorflow和matplotlib安裝教程

    這篇文章主要為大家詳細(xì)介紹了win10下tensorflow和matplotlib安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • django用戶登錄和注銷的實(shí)現(xiàn)方法

    django用戶登錄和注銷的實(shí)現(xiàn)方法

    這篇文章主要介紹了django用戶登錄和注銷的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • Python實(shí)現(xiàn)灰色關(guān)聯(lián)分析與結(jié)果可視化的詳細(xì)代碼

    Python實(shí)現(xiàn)灰色關(guān)聯(lián)分析與結(jié)果可視化的詳細(xì)代碼

    今天小編通過代碼以灰色色系為例給大家介紹Python灰色關(guān)聯(lián)分析實(shí)現(xiàn)方法,灰色關(guān)聯(lián)度分析對(duì)于一個(gè)系統(tǒng)發(fā)展變化態(tài)勢(shì)提供了量化的度量,非常適合動(dòng)態(tài)歷程分析,感興趣的朋友一起看看吧
    2022-03-03
  • python3 下載網(wǎng)絡(luò)圖片代碼實(shí)例

    python3 下載網(wǎng)絡(luò)圖片代碼實(shí)例

    這篇文章主要介紹了python3 下載網(wǎng)絡(luò)圖片代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python 3.7.4 安裝 opencv的教程

    python 3.7.4 安裝 opencv的教程

    這篇文章主要介紹了python 3.7.4 安裝 opencv的教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Python?異步等待任務(wù)集合

    Python?異步等待任務(wù)集合

    這篇文章主要為大家介紹了Python?異步等待任務(wù)集合,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • python正則表達(dá)式匹配IP代碼實(shí)例

    python正則表達(dá)式匹配IP代碼實(shí)例

    這篇文章主要介紹了python正則表達(dá)式匹配IP代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python中模擬enum枚舉類型的5種方法分享

    Python中模擬enum枚舉類型的5種方法分享

    這篇文章主要介紹了Python中模擬enum枚舉類型的5種方法分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2014-11-11
  • scrapy爬蟲:scrapy.FormRequest中formdata參數(shù)詳解

    scrapy爬蟲:scrapy.FormRequest中formdata參數(shù)詳解

    這篇文章主要介紹了scrapy爬蟲:scrapy.FormRequest中formdata參數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python實(shí)現(xiàn)疫情通定時(shí)自動(dòng)填寫功能(附代碼)

    Python實(shí)現(xiàn)疫情通定時(shí)自動(dòng)填寫功能(附代碼)

    這篇文章主要介紹了Python實(shí)現(xiàn)疫情通定時(shí)自動(dòng)填寫功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評(píng)論