Python Django中間件,中間件函數(shù),全局異常處理操作示例
本文實(shí)例講述了Python Django中間件,中間件函數(shù),全局異常處理操作。分享給大家供大家參考,具體如下:
應(yīng)用名/middleware.py(定義中間件類(lèi),中間件函數(shù)。文件名可以任意):
from django.http import HttpResponse # 定義中間件類(lèi)。 (類(lèi)名可以任意,但類(lèi)中的方法名是固定的) class TestMiddleware(object): '''中間件類(lèi)''' def __init__(self): '''服務(wù)器重啟之后,接收第一個(gè)請(qǐng)求時(shí)調(diào)用(只會(huì)調(diào)用一次)''' print('----init----') # 中間件函數(shù)。(用到哪個(gè)函數(shù)寫(xiě)哪個(gè),不需要全寫(xiě)) def process_request(self, request): '''產(chǎn)生request對(duì)象之后,url匹配之前調(diào)用''' print('----process_request----') # return HttpResponse('process_request') # 默認(rèn)放行,不攔截請(qǐng)求。 def process_view(self, request, view_func, *view_args, **view_kwargs): '''url匹配之后,視圖函數(shù)調(diào)用之前調(diào)用''' print('----process_view----') # view_func: url匹配到的視圖函數(shù)。 return HttpResponse('process_view') # return HttpResponse對(duì)象,表示攔截,直接執(zhí)行process_response函數(shù)。 def process_response(self, request, response): '''視圖函數(shù)調(diào)用之后,response返回瀏覽器之前''' print('----process_response----') return response # 一般會(huì)返回響應(yīng)。 # 定義中間件類(lèi),處理全局異常 class ExceptionTestMiddleware(object): # 如果注冊(cè)多個(gè)process_exception函數(shù),那么函數(shù)的執(zhí)行順序與注冊(cè)的順序相反。(其他中間件函數(shù)與注冊(cè)順序一致) # 中間件函數(shù),用到哪個(gè)就寫(xiě)哪個(gè),不需要寫(xiě)所有的中間件函數(shù)。 def process_exception(self, request, exception): '''視圖函數(shù)發(fā)生異常時(shí)調(diào)用''' print('----process_exception1----') print(exception)
項(xiàng)目名/settings.py(項(xiàng)目配置,注冊(cè)中間件類(lèi)):
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', # 注冊(cè)中間件類(lèi) (中間件類(lèi)所在py文件路徑.類(lèi)名) 'booktest.middleware.ExceptionTestMiddleware', # 如果注冊(cè)多個(gè)process_exception函數(shù),那么函數(shù)的執(zhí)行順序與注冊(cè)的順序相反。 )
希望本文所述對(duì)大家基于Django框架的Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
在Python的gevent框架下執(zhí)行異步的Solr查詢(xún)的教程
這篇文章主要介紹了在Python的gevent框架下執(zhí)行異步的Solr查詢(xún)的教程,Solr請(qǐng)求在處理I/O方面較為高效,需要的朋友可以參考下2015-04-04python計(jì)算圓周長(zhǎng)、面積、球體體積并畫(huà)出圓
這篇文章主要介紹了python計(jì)算圓周長(zhǎng)、面積、球體體積并畫(huà)出圓(python3+PyObject+Gtk實(shí)現(xiàn)界面聯(lián)動(dòng)),需要的朋友可以參考下2014-04-04Tensorflow加載模型實(shí)現(xiàn)圖像分類(lèi)識(shí)別流程詳解
在視覺(jué)領(lǐng)域可以分為:1、圖像分類(lèi) 2、語(yǔ)義分割 3、實(shí)例分割 4、目標(biāo)檢測(cè)(跟蹤) 5、關(guān)鍵點(diǎn)檢測(cè)。該篇主要講解利用Tensorflow 對(duì)圖像進(jìn)行圖像分類(lèi)2022-09-09如何從csv文件構(gòu)建Tensorflow的數(shù)據(jù)集
這篇文章主要介紹了如何從csv文件構(gòu)建Tensorflow的數(shù)據(jù)集,幫助大家更好的理解和使用Tensorflow,感興趣的朋友可以了解下2020-09-09python實(shí)現(xiàn)與redis交互操作詳解
這篇文章主要介紹了python實(shí)現(xiàn)與redis交互操作,結(jié)合實(shí)例形式分析了Python Redis模塊的安裝、導(dǎo)入、連接與簡(jiǎn)單操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2020-04-04