Python Django中間件,中間件函數(shù),全局異常處理操作示例
本文實(shí)例講述了Python Django中間件,中間件函數(shù),全局異常處理操作。分享給大家供大家參考,具體如下:
應(yīng)用名/middleware.py(定義中間件類,中間件函數(shù)。文件名可以任意):
from django.http import HttpResponse
# 定義中間件類。 (類名可以任意,但類中的方法名是固定的)
class TestMiddleware(object):
'''中間件類'''
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)。
# 定義中間件類,處理全局異常
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è)中間件類):
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è)中間件類 (中間件類所在py文件路徑.類名) 'booktest.middleware.ExceptionTestMiddleware', # 如果注冊(cè)多個(gè)process_exception函數(shù),那么函數(shù)的執(zhí)行順序與注冊(cè)的順序相反。 )

希望本文所述對(duì)大家基于Django框架的Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Django使用AJAX調(diào)用自己寫(xiě)的API接口的方法
這篇文章主要介紹了Django使用AJAX調(diào)用自己寫(xiě)的API接口的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03
最強(qiáng)Python可視化繪圖庫(kù)Plotly詳解用法
數(shù)據(jù)分析離不開(kāi)數(shù)據(jù)可視化。Plotly 是一款用來(lái)做數(shù)據(jù)分析和可視化的在線平臺(tái),功能非常強(qiáng)大,可以在線繪制很多圖形比如條形圖、散點(diǎn)圖、餅圖、直方圖等等2021-11-11
Python腳本在Appium庫(kù)上對(duì)移動(dòng)應(yīng)用實(shí)現(xiàn)自動(dòng)化測(cè)試
這篇文章主要介紹了使用Python的Appium庫(kù)對(duì)移動(dòng)應(yīng)用實(shí)現(xiàn)自動(dòng)化測(cè)試的教程,屬于Python腳本的一個(gè)自動(dòng)化應(yīng)用,需要的朋友可以參考下2015-04-04
詳細(xì)解讀tornado協(xié)程(coroutine)原理
這篇文章主要介紹了詳細(xì)解讀tornado協(xié)程(coroutine)原理,涉及協(xié)程定義,生成器和yield語(yǔ)義,F(xiàn)uture對(duì)象,ioloop對(duì)象,函數(shù)裝飾器coroutine等相關(guān)內(nèi)容,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
Django數(shù)據(jù)庫(kù)連接丟失問(wèn)題的解決方法
這篇文章主要介紹了Django數(shù)據(jù)庫(kù)連接丟失問(wèn)題的解決方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
Tensorflow中使用tfrecord方式讀取數(shù)據(jù)的方法
這篇文章主要介紹了Tensorflow中使用tfrecord方式讀取數(shù)據(jù)的方法,適用于數(shù)據(jù)較多時(shí),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
Python下實(shí)現(xiàn)的RSA加密/解密及簽名/驗(yàn)證功能示例
這篇文章主要介紹了Python下實(shí)現(xiàn)的RSA加密/解密及簽名/驗(yàn)證功能,結(jié)合具體實(shí)例形式分析了Python中RSA加密、解密的實(shí)現(xiàn)方法及簽名、驗(yàn)證功能的使用技巧,需要的朋友可以參考下2017-07-07
Python在畫(huà)圖時(shí)使用特殊符號(hào)的方法總結(jié)
在制作圖表時(shí),如果遇到需要利用特殊符號(hào)進(jìn)行表示時(shí)該怎么辦呢?不用慌,這篇文章為大家總結(jié)了python畫(huà)圖中使用各種特殊符號(hào)的方式,需要的可以參考一下2022-04-04

