django中介軟體 middleware

2021-09-28 11:23:36 字數 3384 閱讀 5343

二、中介軟體的配置

三、中介軟體的使用

2.process_view的使用

3.process_exception的使用

4.process_response的使用

5.process_template_response的使用

django的中介軟體是乙個輕量級的外掛程式系統,在django中的請求和響應中,可以利用中介軟體干預檢視的請求和響應。

中介軟體是乙個物件導向的類,有五個方法

案例—**某個ip位址

# 案例----**非法ip

print(request.meta['remote_addr']) # 獲取訪問的ip位址

req_ip = request.meta['remote_addr']

# 判斷獲取的ip

if req_ip == '10.10.107.33':

return httpresponse('無法訪問')

else:

print('正常訪問')

python manage.py runserver 0.0.0.0:8000
## 對request攜帶的引數做預處理

## 例如引數中 是否含有敏感字等

def process_view(self,request, callback, callback_args, callback_kwargs):

# callback:對應的檢視函式,訪問的是哪個檢視函式,callback就是那個函式

# callback_args:元組型別,檢視函式的引數

# callback_kwargs:字典型別,檢視函式的引數

print('我是在process_request函式執行完後執行的函式process_view')

案例-----此函式在出錯後會執行,我們將報錯資訊寫入日誌

def process_exception(self, request, exception):

import os

from qshop.settings import base_dir

print("我是 process_exception")

print(exception)

## 將exception寫入檔案中 error.log, 開啟檔案

file = os.path.join(base_dir, 'error.log')

with open(file, "a") as f:

import time

now = time.strftime("%y-%m-%d %h:%m:%s", time.localtime())

content = "[%s]:%s\n" % (now, str(exception))

f.write(content)

return httpresponse("**報錯了

print('我是響應物件')

需要寫檢視和路由

在views中

#---------------------------------中介軟體模板測試

路由:

middlewaretest.py

def process_response(self, request, response):

print('我是響應物件')

return response

Django 中介軟體

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

Django中介軟體

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

Django中介軟體

什麼是中介軟體?django中的中介軟體是乙個輕量級 底層的外掛程式系統,可以介入django的請求和響應處理過程,修改django的輸入或輸出。中介軟體的設計為開發者提供了一種無侵入式的開發方式,增強了django框架的健壯性。我們可以使用中介軟體,在django處理檢視的不同階段對輸入或輸出進行...