中介軟體要麼對來自使用者的資料進行預處理, 然後發送給應用;要麼在應用將回應負載返回給使用者之前, 對結果資料進行一些最終的調整。
資料流程
我們可以從源碼看出, process request 和 process response的執行載入順序正好是相反, 在迴圈中, process_request是被append到列表的末尾, 而process_request是被insert到最前面的。
解析 url
當_request_middleware列表中的 process_request 被遍歷完, 會得到一個經過處理的request物件(加入了request.session,request.user等屬性)。
django將按順序進行對url進行正則匹配, 如果匹配不成功, 就會拋出異常 django.core.urlresolvers.Resolver404。
這個方法的作用是判斷cookiers中是否存在csrf的欄位, 如果不存在, 會直接拋出異常, 如果存在, 返回None。
執行view邏輯
view函數需要滿足:
XFrameOptionsMiddleware將X-Frame-Options加入到response當中,防止網站被嵌套、被劫持。
總結
本文重點在於:
理解WSGI協議,並且WSGIHandler這個類控制整個請求到回應的流程,以及整個流程的基本過程。
中介軟體的概念,以及每一個process_request, process_response, process_view, process_exception方法在哪個步驟發揮著什麼樣的作用。
中間價的執行時有順序的,request與view是按照順序去執行的,而response和exception是反序的,這一步實在WSGIHandler在載入到它的各個列表的時候完成的。
XFrameOptionsMiddleware將X-Frame-Options加入到response當中,防止網站被嵌套、被劫持。
總結
本文重點在於:
理解WSGI協議,並且WSGIHandler這個類控制整個請求到回應的流程,以及整個流程的基本過程。
中介軟體的概念,以及每一個process_request, process_response, process_view, process_exception方法在哪個步驟發揮著什麼樣的作用。
中間價的執行時有順序的,request與view是按照順序去執行的,而response和exception是反序的,這一步實在WSGIHandler在載入到它的各個列表的時候完成的。