溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django框架登錄加上驗證碼校驗實現驗證功能示例

發布時間:2020-08-30 04:18:30 來源:腳本之家 閱讀:441 作者:SpecYue 欄目:開發技術

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

驗證碼生成函數

pip install Pillow

# /verify_code
def verif_ycode(request):
  #引入繪圖模塊
  from PIL import Image, ImageDraw, ImageFont
  #引入隨機函數模塊
  import random
  #定義變量,用于畫面的背景色、寬、高
  bgcolor = (random.randrange(20, 100), random.randrange(
    20, 100), random.randrange(20, 100))
  width = 100
  height = 50
  #創建畫面對象
  im = Image.new('RGB', (width, height), bgcolor)
  #創建畫筆對象
  draw = ImageDraw.Draw(im)
  #調用畫筆的point()函數繪制噪點
  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)
  #定義驗證碼的備選值
  str = '1234567890QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm'
  #隨機選取4個值作為驗證碼
  rand_str = ''
  for i in range(0, 4):
    rand_str += str[random.randrange(0, len(str))]
  #構造字體對象
  # font = ImageFont.truetype('楷體', 40)
  #構造字體顏色
  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個字
  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)
  #釋放畫筆
  del draw
  # 存入session,用于做進一步驗證
  request.session['verifycode'] = rand_str
  #內存文件操作
  import io
  buf = io.BytesIO()
  #將圖片保存在內存中,文件類型為png
  im.save(buf, 'png')
  #將內存中的圖片數據返回給客戶端,MIME類型為圖片png
  return HttpResponse(buf.getvalue(), 'image/png')

login.html

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

login_check視圖函數里加上驗證碼校驗

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

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

判斷是否一樣,不一樣的話就redirct('/login')跳轉到登錄頁面

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

否則向下運行

希望本文所述對大家基于Django框架的Python程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女