欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

千鋒扣丁學堂Python培訓之Django框架驗證碼用法實例分析

2019-05-10 13:20:07 2815瀏覽

今天千鋒扣丁學堂Python培訓老師給大家分享一篇關于Django框架驗證碼用法實例分析,結合實例形式分析了PythonDjango框架驗證碼的功能、實現(xiàn)方法及相關操作技巧,下面我們一起來看一下吧。



驗證碼

1、作用

在用戶登錄,注冊以及一些敏感操作的時候,我們?yōu)榱朔乐狗掌鞅槐┝φ埱?,或爬蟲爬取,我們可以使用驗證碼進行過濾,減輕服務器的壓力。

驗證碼需要使用繪圖Pillow

pip3installPillow

核心API

Image

需要模式

尺寸

背景色

ImageDraw

綁定畫布

模式

封裝了繪制的API

text

point

line

arch

ImageFont

手動指定字體

2、業(yè)務流程

繪制驗證碼圖片


background = (10,20,30) // RGB顏色
初始化畫布

image = Image.new(‘RGB',(100,50),background)
獲取畫布中畫筆對象


draw = ImageDraw.Draw(image)
繪制驗證碼,隨機四個


font = ImageFont.truetype(‘path',size)
fontcolor = (20,40,60)
draw.text((x,y),'R',font,fontcolor)
返回驗證碼內(nèi)容


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

3、代碼范例

html頁面

<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">密    碼</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">驗證碼</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視圖

'''
生成并返回驗證碼
'''
def getvcode(request):
  # 隨機生成驗證碼
  population = string.ascii_letters+string.digits
  letterlist = random.sample(population,4)
  vcode = ''.join(letterlist)
  # 保存該用戶的驗證碼
  request.session['vcode']=vcode
  # 繪制驗證碼
  # 需要畫布,長寬顏色
  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())
  # 返回驗證碼字節(jié)數(shù)據(jù)
  # 創(chuàng)建字節(jié)容器
  buffer = io.BytesIO()
  # 將畫布內(nèi)容丟入容器
  image.save(buffer,'png')
  # 返回容器內(nèi)的字節(jié)
  return HttpResponse(buffer.getvalue(),'image/png')
# 獲取隨機顏色
def getRandomColor():
  red = random.randint(0,255)
  green = random.randint(0,255)
  blue = random.randint(0,255)
  return (red,green,blue)

以上就是關于千鋒扣丁學堂Python培訓之Django框架驗證碼用法實例分析的全部內(nèi)容,希望本文所述對大家基于Django框架的Python程序設計有所幫助,最后想要了解更多關于Python和人工智能方面內(nèi)容的小伙伴,請關注扣丁學堂Python培訓官網(wǎng)、微信等平臺,扣丁學堂IT職業(yè)在線學習教育平臺為您提供權威的Python開發(fā)環(huán)境搭建視頻,Python培訓后的前景無限,行業(yè)薪資和未來的發(fā)展會越來越好的,扣丁學堂老師精心推出的Python視頻教程定能讓你快速掌握Python從入門到精通開發(fā)實戰(zhàn)技能??鄱W堂Python技術交流群:279521237。


扣丁學堂微信公眾號                          Python全棧開發(fā)爬蟲人工智能機器學習數(shù)據(jù)分析免費公開課直播間


      【關注微信公眾號獲取更多學習資料】         【掃碼進入Python全棧開發(fā)免費公開課】



查看更多關于"Python開發(fā)資訊"的相關文章>

標簽: Python培訓 Python視頻教程 Python在線視頻 Python學習視頻 Python培訓班

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部