Django 中間件

1.django 的中間件,從代碼角度上來看,本質上是閉包的一種實現
中間件的做用:驗證是否登陸、處理每次訪問的日誌 等等。
官方參考文檔django

 

2.django 的中間件執行時機: 在每次的請求和響應都會執行session

 

3.多箇中間件時,執行的順序是:
a.在請求視圖被處理前,中間件由上至下依次執行
b.在請求視圖被處理後,中間件由下至上依次執行
Django 中間件閉包

 

4.代碼實現
a.中間件代碼文件能夠隨意放置,我將其放到應用的文件夾裏面
Django 中間件app

 

b.app01.middleware.pyide

def simple_middleware1(get_respone):
    # 這裏的代碼只有第一次請求才會執行,後續再請求就不會再執行了
    # print('simple_middleware1: 第一次請求才會打印,咱們的請求到達時,我都不會打印了')

    def middleware(request):

        # 處理請求到達前的代碼
        print('simple_middleware1: 收到請求了')

        response = get_respone(request)

        # 處理請求被響應後的代碼
        print('simple_middleware1: 請求響應完了')

        return response

    return middleware

def simple_middleware2(get_respone):
    # 這裏的代碼只有第一次請求才會執行,後續再請求就不會再執行了
    # print('第一次請求才會打印,咱們的請求到達時,我都不會打印了')

    def middleware(request):
        # 處理請求到達前的代碼
        print('simple_middleware2: 收到請求了')

        response = get_respone(request)

        # 處理請求被響應後的代碼
        print('simple_middleware2: 請求響應完了')

        return response

    return middleware

 

c.在項目的配置文件中註冊自定義的中間件日誌

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',

    # 註冊自定義的中間件
    'app01.middleware.simple_middleware1', 
    'app01.middleware.simple_middleware2',
]

d.請求結果
Django 中間件code

相關文章
相關標籤/搜索