process_exception(self, request, exception) 函數有兩個參數,exception 是視圖函數異常產生的 Exception 對象python
process_exception 函數的執行順序是按照 settings.py 中設置的中間件的順序的倒序執行django
process_exception 函數只在視圖函數中出現異常的時候才執行,它返回的值能夠是 None,也能夠是一個 HttpResponse 對象函數
若是返回 None,則繼續由下一個中間件的 process_exception 方法來處理異常中間件
若是返回 HttpResponse,將調用中間件中的 process_response 方法對象
middleware_test.py:blog
from django.utils.deprecation import MiddlewareMixin from django.shortcuts import HttpResponse class Test(MiddlewareMixin): def process_request(self, request): print("這是一箇中間件 --> test") def process_exception(self, request, exception): print("這裏是 Test 的 process_exception") print(exception) class Test2(MiddlewareMixin): def process_request(self, request): print("這是一箇中間件 --> test2") def process_exception(self, request, exception): print("這裏是 Test2 的 process_exception") print(exception)
views.py:io
from django.shortcuts import HttpResponse def index(request): print("這裏是 index 頁面") raise ValueError("這是一個錯誤") return HttpResponse("這裏是主頁面 index")
訪問,http://127.0.0.1:8000/index/class
運行結果:test