Django原始碼解析 四 中介軟體

2022-05-07 15:24:12 字數 1622 閱讀 5452

django原始碼解析(一) 開篇

django原始碼解析(二) manage.py

django原始碼解析(三) django開發伺服器,wsgi規範實現

django原始碼解析(四) 中介軟體

django原始碼解析(五) url配置

django中介軟體型別

django的中間型別分為五種: 請求(request)中介軟體,檢視(view)中介軟體,模板(template)中介軟體,響應(response)中介軟體,異常(exception)中介軟體.

特定的型別的中介軟體必須具有指定的方法.請求中介軟體必須具有process_request方法;檢視中介軟體必須具有process_view方法;模板中介軟體必須具有process_template_response方法;response必須具有process_response方法;異常中介軟體必須具有process_exception方法.可以存在乙個類同時具有多個以上方法,即乙個類可以同時是多種中介軟體.

中介軟體類必須使用無參__init__函式,建立類例項時,不需要任何引數.

中介軟體處理過程1. 應用請求中介軟體,處理傳入請求.如果請求中介軟體方法process_request返回的response非空,則終止處理過程,執行步驟7.

2. url匹配,查詢檢視函式.(下一章分析)

3. 應用檢視中介軟體,處理傳入請求 檢視與檢視引數.如果檢視中介軟體方法process_view返回的response非空,則終止處理過程,執行步驟7.

4. 呼叫檢視函式.

5. 如果檢視函式丟擲異常 ,應用異常中介軟體,處理傳入請求與異常.如果異常中介軟體方法process_exception回的response非空,則終止處理過程.無論是否終止過程,都會跳到步驟7.

7. 應用響應中介軟體

,處理傳入請求與中介軟體返回的response.

不同型別中介軟體的處理順序中介軟體的處理順序指在settings.py中,middleware_classes包含中介軟體的執行順序.

新增中介軟體列表的執行**:

KOA中介軟體原始碼解析

告別 噩夢,從這裡開始 請看下面來自官網的 和執行順序 以上 的實現如果用 函式來實現,無疑是一場噩夢,而koa卻以十分優雅的方式實現了如下圖洋蔥圖一般的 核心是利用es6的新特性 generator 具體實現是利用koa的兩個niubi轟轟的模組 compose和cocompose模組,用於將所有...

koa2中介軟體實現原始碼解析

眾所周知,koa2核心的部分就是middleware和context了,本文將從結合官網demo以及原始碼對其進行解讀 const koa require koa x response time const start date.now await next const ms date.now st...

Negroni中介軟體原始碼分析

我們可以先看一下http server的處理邏輯 在這個邏輯處理的環節中,negroni充當乙個http handler的角色,並對於所有的http request的處理都會通過negroni被轉交到其內部的子中介軟體 negroni本質上可以被看作乙個中介軟體是因為它實現了http handler...