django異常日誌 Django中介軟體的四種方法

2021-10-14 02:41:34 字數 3812 閱讀 4200

request是httprequest物件。

view_func是django即將使用的檢視函式。 (它是實際的函式物件,而不是函式的名稱作為字串。)

view_args是將傳遞給檢視的位置引數的列表.

view_kwargs是將傳遞給檢視的關鍵字引數的字典。 view_args和view_kwargs都不包含第乙個檢視引數(request)

print("md1請求")

#return httpresponse("md1中斷")

def process_response(self,request,response):

print("md1返回")

return response

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

print("md1view")

class md2(middlewaremixin):

def process_request(self,request):

print("md2請求")

return httpresponse("md2中斷")

def process_response(self,request,response):

print("md2返回")

return response

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

print("md2view")

md1請求

md2請求

md1view

md2view

view函式...

md2返回

md1返回

print("md1請求")

#return httpresponse("md1中斷")

def process_response(self,request,response):

print("md1返回")

md1請求

md2請求

view函式...

md2返回

md1返回

注意:process_view如果有返回值,會越過其他的process_view以及檢視函式,但是所有的process_response都還會執行

這個方法只有在檢視函式**現異常了才執行,它返回的值可以是乙個none也可以是乙個httpresponse物件。如果是httpresponse物件,django將呼叫模板和中介軟體中的process_response方法,並返回給瀏覽器,否則將預設處理異常。如果返回乙個none,則交給下乙個中介軟體的process_exception方法來處理異常。它的執行順序也是按照中介軟體註冊順序的倒序執行

示例修改如下:

class md1(middlewaremixin):

def process_request(self,request):

print("md1請求")

#return httpresponse("md1中斷")

def process_response(self,request,response):

print("md1返回")

print("md2請求")

# return httpresponse("md2中斷")

def process_response(self,request,response):

print("md2返回")

return response

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

print("md2 process_view...")

def process_exception(self,request,exception):

print("md1 process_exception...")

md1請求

md2請求

md1 process_view...

md2 process_view...

view函式...

md2返回

md1返回

md1請求

md2請求

md1 process_view...

md2 process_view...

view函式...

md2 process_exception...

md2返回

md1返回

python的django介紹 Django 簡介

django 簡介 自強學堂的django教程將節省你大量的時間,並且使你的web開發充滿樂趣。通過django,你可以建立乙個高效能的web應用而只花費最少的時間和精力。django 中提供了開發 經常用到的模組,常見的 都為你寫好了,通過減少重複的 django 使你能夠專注於 web 應用上有...

Django日誌配置

django的日誌在 your project name settings.py檔案中配置。具體配置如下 logging detail handlers file level info class logging.handlers.rotatingfilehandler maxbytes 1024 ...

Django日誌輸出

django 中使用 logging進行日誌輸出 logging 模組簡介 logging 是 python 標準庫中的模組,用於記錄 log。主要包括以下四個元件 django 中使用 logging 模組記錄log,如果要使用它,方法很簡單,就是在 settings 中通過變數 logging,...