本文實例講述了Python Django中間件,中間件函數,全局異常處理操作。分享給大家供大家參考,具體如下:
應用名/middleware.py(定義中間件類,中間件函數。文件名可以任意):
from django.http import HttpResponse# 定義中間件類。 (類名可以任意,但類中的方法名是固定的)class TestMiddleware(object): '''中間件類''' def __init__(self): '''服務器重啟之后,接收第一個請求時調用(只會調用一次)''' print('----init----') # 中間件函數。(用到哪個函數寫哪個,不需要全寫) def process_request(self, request): '''產生request對象之后,url匹配之前調用''' print('----process_request----') # return HttpResponse('process_request') # 默認放行,不攔截請求。 def process_view(self, request, view_func, *view_args, **view_kwargs): '''url匹配之后,視圖函數調用之前調用''' print('----process_view----') # view_func: url匹配到的視圖函數。 return HttpResponse('process_view') # return HttpResponse對象,表示攔截,直接執行process_response函數。 def process_response(self, request, response): '''視圖函數調用之后,response返回瀏覽器之前''' print('----process_response----') return response # 一般會返回響應。# 定義中間件類,處理全局異常class ExceptionTestMiddleware(object): # 如果注冊多個process_exception函數,那么函數的執行順序與注冊的順序相反。(其他中間件函數與注冊順序一致) # 中間件函數,用到哪個就寫哪個,不需要寫所有的中間件函數。 def process_exception(self, request, exception): '''視圖函數發生異常時調用''' print('----process_exception1----') print(exception)
項目名/settings.py(項目配置,注冊中間件類):
MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'booktest.middleware.TestMiddleware', # 注冊中間件類 (中間件類所在py文件路徑.類名) 'booktest.middleware.ExceptionTestMiddleware', # 如果注冊多個process_exception函數,那么函數的執行順序與注冊的順序相反。)
希望本文所述對大家基于Django框架的Python程序設計有所幫助。
新聞熱點
疑難解答