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

Django框架登錄加上驗(yàn)證碼校驗(yàn)實(shí)現(xiàn)驗(yàn)證功能示例

 更新時(shí)間:2019年05月23日 10:34:06   作者:SpecYue  
這篇文章主要介紹了Django框架登錄加上驗(yàn)證碼校驗(yàn)實(shí)現(xiàn)驗(yàn)證功能,結(jié)合實(shí)例形式分析了Django框架基于Pillow模塊的圖形驗(yàn)證碼生成與使用相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Django框架登錄加上驗(yàn)證碼校驗(yàn)實(shí)現(xiàn)驗(yàn)證功能。分享給大家供大家參考,具體如下:

驗(yàn)證碼生成函數(shù)

pip install Pillow

# /verify_code
def verif_ycode(request):
  #引入繪圖模塊
  from PIL import Image, ImageDraw, ImageFont
  #引入隨機(jī)函數(shù)模塊
  import random
  #定義變量,用于畫(huà)面的背景色、寬、高
  bgcolor = (random.randrange(20, 100), random.randrange(
    20, 100), random.randrange(20, 100))
  width = 100
  height = 50
  #創(chuàng)建畫(huà)面對(duì)象
  im = Image.new('RGB', (width, height), bgcolor)
  #創(chuàng)建畫(huà)筆對(duì)象
  draw = ImageDraw.Draw(im)
  #調(diào)用畫(huà)筆的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)證碼的備選值
  str = '1234567890QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm'
  #隨機(jī)選取4個(gè)值作為驗(yàn)證碼
  rand_str = ''
  for i in range(0, 4):
    rand_str += str[random.randrange(0, len(str))]
  #構(gòu)造字體對(duì)象
  # font = ImageFont.truetype('楷體', 40)
  #構(gòu)造字體顏色
  fontcolor1 = (255, random.randrange(0, 255), random.randrange(0, 255))
  fontcolor2 = (255, random.randrange(0, 255), random.randrange(0, 255))
  fontcolor3 = (255, random.randrange(0, 255), random.randrange(0, 255))
  fontcolor4 = (255, random.randrange(0, 255), random.randrange(0, 255))
  #繪制4個(gè)字
  draw.text((5, 2), rand_str[0], fill=fontcolor1)
  draw.text((25, 2), rand_str[1], fill=fontcolor2)
  draw.text((50, 2), rand_str[2], fill=fontcolor3)
  draw.text((75, 2), rand_str[3], fill=fontcolor4)
  #釋放畫(huà)筆
  del draw
  # 存入session,用于做進(jìn)一步驗(yàn)證
  request.session['verifycode'] = rand_str
  #內(nèi)存文件操作
  import io
  buf = io.BytesIO()
  #將圖片保存在內(nèi)存中,文件類(lèi)型為png
  im.save(buf, 'png')
  #將內(nèi)存中的圖片數(shù)據(jù)返回給客戶(hù)端,MIME類(lèi)型為圖片png
  return HttpResponse(buf.getvalue(), 'image/png')

login.html

html文件加上<img src="/verify_code" alt="">…當(dāng)然這里還需要配置url,去urls.py里url(r'^verify_code$',views.verif_ycode),

login_check視圖函數(shù)里加上驗(yàn)證碼校驗(yàn)

首先拿到用戶(hù)輸入的驗(yàn)證碼和def verif_ycode(request):函數(shù)保存在session中的驗(yàn)證碼

# 獲取驗(yàn)證碼
vcode1 = request.POST.get('vcode')# 用戶(hù)輸入的驗(yàn)證碼
vcode2 = request.session.get('verifycode')# 獲取session中保存的驗(yàn)證碼

判斷是否一樣,不一樣的話(huà)就redirct('/login')跳轉(zhuǎn)到登錄頁(yè)面

if vcode1 != vcode2:
  return redirect('/login')
else:

否則向下運(yùn)行

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

相關(guān)文章

  • Django CBV模型源碼運(yùn)行流程詳解

    Django CBV模型源碼運(yùn)行流程詳解

    這篇文章主要介紹了Django CBV模型源碼運(yùn)行流程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • python?字典常用方法超詳細(xì)梳理總結(jié)

    python?字典常用方法超詳細(xì)梳理總結(jié)

    這篇文章主要介紹了Python數(shù)據(jù)類(lèi)型字典dictionary,字典是另一種可變?nèi)萜髂P停铱纱鎯?chǔ)任意類(lèi)型對(duì)象。本篇文字將詳細(xì)講述字典的常用方法,需要的可以參考一下
    2022-03-03
  • Python變量賦值的秘密分享

    Python變量賦值的秘密分享

    在Python中,我們令一個(gè)變量等于另外一個(gè)變量時(shí),并不是把值傳遞給它,而是直接把指向的地址更改了,我們通過(guò)一個(gè)小例子來(lái)看看這個(gè)有趣的過(guò)程,需要的朋友可以參考下
    2018-04-04
  • Python中ArcPy柵格裁剪柵格(批量對(duì)齊柵格圖像范圍并統(tǒng)一行數(shù)與列數(shù))

    Python中ArcPy柵格裁剪柵格(批量對(duì)齊柵格圖像范圍并統(tǒng)一行數(shù)與列數(shù))

    本文介紹基于Python中ArcPy模塊,實(shí)現(xiàn)基于柵格圖像批量裁剪柵格圖像,同時(shí)對(duì)齊各個(gè)柵格圖像的空間范圍,統(tǒng)一其各自行數(shù)與列數(shù)的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Python中常用的數(shù)據(jù)結(jié)構(gòu)與算法優(yōu)化技巧指南

    Python中常用的數(shù)據(jù)結(jié)構(gòu)與算法優(yōu)化技巧指南

    Python是一種強(qiáng)大而靈活的編程語(yǔ)言,它提供了豐富的數(shù)據(jù)結(jié)構(gòu)和算法庫(kù),但是在處理大規(guī)模數(shù)據(jù)或者需要高效運(yùn)行的情況下,需要考慮一些優(yōu)化技巧,本文將介紹一些Python中常用的數(shù)據(jù)結(jié)構(gòu)與算法優(yōu)化技巧,需要的朋友可以參考下
    2024-05-05
  • python傳遞參數(shù)方式小結(jié)

    python傳遞參數(shù)方式小結(jié)

    這篇文章主要介紹了python傳遞參數(shù)方式,實(shí)例總結(jié)了Python常用的參數(shù)傳遞方式,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • python查看數(shù)據(jù)類(lèi)型的方法

    python查看數(shù)據(jù)類(lèi)型的方法

    在本篇文章里小編給大家整理了關(guān)于python怎么查看數(shù)據(jù)類(lèi)型的相關(guān)知識(shí)點(diǎn),有需要的朋友們學(xué)習(xí)下。
    2019-10-10
  • python 中yaml文件用法大全

    python 中yaml文件用法大全

    本文主要是總結(jié)yaml常用的一些數(shù)據(jù)形式,對(duì)于我們正常的項(xiàng)目使用,已經(jīng)足夠用了,接下來(lái)通過(guò)本文給大家分享python 中yaml文件用法,需要的朋友參考下吧
    2021-07-07
  • python如何實(shí)現(xiàn)不可變字典inmutabledict

    python如何實(shí)現(xiàn)不可變字典inmutabledict

    這篇文章主要介紹了python如何實(shí)現(xiàn)不可變字典inmutabledict,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Python知識(shí)之列表的十個(gè)小技巧分享

    Python知識(shí)之列表的十個(gè)小技巧分享

    這篇文章主要介紹了Python知識(shí)之列表的十個(gè)小技巧分享,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01

最新評(píng)論