Django框架 11 分頁 中介軟體 驗證碼

2021-08-27 13:51:54 字數 3076 閱讀 8849

在django中提供了很多的外掛程式功能,有利於開發者快速開發,比如中介軟體,分頁器等

還提供了pillow庫,可以進行生成,用於登入的驗證碼圖書設計。

1. 中介軟體middleware

a) 中介軟體是乙個輕量級的,底層的外掛程式,可以介入django的請求和響應的過程(面向切面程式設計)

b) 中介軟體的本質就是乙個python類

c) 面向切面程式設計(aspect oriented programming)簡稱aop,aop的主要實現目的是針對業務處理過程中的切面進行提取,它所面對的是處理過程中的某個步驟或階段,以獲取邏輯過程中各部分之間低耦合的隔離效果

1.1 中介軟體的處理函式

__init__ :沒有引數,在伺服器響應的第乙個請求的時候自動呼叫,使用者確定時候啟動該中介軟體

process_request(self, request): 在執行檢視前被呼叫,每個請求上都會被呼叫,不主動進行返回或返回httpresponse物件

process_view(self, request, view_func,view_args, view_kwargs):呼叫檢視之前執行,每個請求都會呼叫,不主動進行返回或返回httpresponse物件

process_template_response(self, request, response):在檢視剛好執行完後進行呼叫,每個請求都會呼叫,不主動進行返回或返回httpresponse物件

process_response(self, request, response):所有響應返回瀏覽器之前呼叫,每個請求都會呼叫,不主動進行返回或返回httpresponse物件

process_exception(self, request, exception):當檢視丟擲異常時呼叫,不主動進行返回或返回httpresponse物件

1.2 處理流程

1.3 自定義中介軟體流程

在工程目錄下建立middleware目錄

目錄中建立乙個python檔案

在根據功能需求,建立切入需求類,重寫切入點方法

具體**
from django.utils.deprecation import middlewaremixin

class authusermiddleware(middlewaremixin):

def process_request(self, request):

print(『***x』)

啟動中介軟體,在settings中進行配置,middleware中新增middleware.檔名.類名

2.分頁

2.1 分頁庫paginator的基本語法

django提供了分頁的工具,存在於django.core中

paginator: 資料分頁工具

page:具體的某一頁

paginator:

物件建立: paginator(資料集,每一頁資料)
屬性:

count  計算和

num_pages: 頁面總和

page_range: 頁碼列表,從1開始

方法:

page(頁碼):獲取的乙個page物件,頁碼不存在則丟擲invalidpage的異常
2.2 常見錯誤
invalidpage:page()傳遞無效頁碼

pagenotaninteger:page()傳遞的不是整數

empty: page()傳遞的值有效,但是沒有資料

2.3 page物件

page:

物件獲取,通過paginator的page()方法獲得
屬性:

object_list: 當前頁面上所有的資料物件

number: 當前頁的頁碼值

paginator: 當前page關聯的paginator物件

方法:

len(): 返回當前也的資料的個數

2.4 paginator物件和page物件的關係

如下有學生表,學生表中有25條資料,通過分頁,每乙個6條資料,去實現分頁的功能

3. 驗證碼

在使用者登入,註冊以及一些敏感操作的時候,我們為了防止伺服器被暴力請求,或爬蟲爬取,我們可以使用驗證碼進行過濾,減輕伺服器的壓力。

3.1 驗證碼需要使用繪圖pillow

pip install pillow
3.2 核心:
image.imagedraw.imagefont
3.3 繪製流程:
background = (10,20,30)  # rgb顏色

# 初始化畫布

image = image.new(『rgb』,(100,50), background)

# 獲取畫布中畫筆物件

draw = imagedraw.draw(image, 『rgb』)

# 繪製驗證碼,隨機四個

# 匯入字型檔案path表示路徑

font = imagefont.truetype(『path』, size)

fontcolor = (20,40,60)

draw.text((x,y), 『r』, font.fontcolor) # x,y是文字左上角座標

Django框架 中介軟體

1 定義乙個中介軟體工廠函式,然後返回乙個可以被呼叫的中介軟體。2 中介軟體工廠函式需要接收乙個可以呼叫的get response物件。3 返回的中介軟體也是乙個可以被呼叫的物件,並且像檢視一樣需要接收乙個request物件引數,返回乙個response物件。例 定義 def middleware ...

Django 中介軟體

django中的中介軟體是乙個輕量級 底層的外掛程式系統,可以介入django的請求和響應處理過程,修改django的輸入或輸出。中介軟體的執行過程如下圖所示 django在中介軟體中預置了五個方法,這五個方法的區別在於不同的階段執行,對輸入或輸出進行干預,方法如下 def init self pa...

Django中介軟體

給檢視函式加裝飾器判斷使用者是否登入,把沒有登入的請求跳轉到登入頁面,我們通過給幾個特定檢視函式加裝飾器實現了這個需求,但是這樣做比較繁瑣,用django中的中介軟體會比較簡潔 什麼是中介軟體 中介軟體是幫助我們再檢視函式執行之前和執行之後都可以做一些額外的操作,它本質上就是乙個自定義類,類中定義了...