Python Django中間件,中間件函數(shù),全局異常處理操作示例
更新時間:2019年11月08日 09:49:58 作者:houyanhua1
這篇文章主要介紹了Python Django中間件,中間件函數(shù),全局異常處理操作,結(jié)合實例形式分析了Django中間件,中間件函數(shù),全局異常處理相關(guān)操作技巧,需要的朋友可以參考下
本文實例講述了Python Django中間件,中間件函數(shù),全局異常處理操作。分享給大家供大家參考,具體如下:
應(yīng)用名/middleware.py(定義中間件類,中間件函數(shù)。文件名可以任意):
from django.http import HttpResponse
# 定義中間件類。 (類名可以任意,但類中的方法名是固定的)
class TestMiddleware(object):
'''中間件類'''
def __init__(self):
'''服務(wù)器重啟之后,接收第一個請求時調(diào)用(只會調(diào)用一次)'''
print('----init----')
# 中間件函數(shù)。(用到哪個函數(shù)寫哪個,不需要全寫)
def process_request(self, request):
'''產(chǎn)生request對象之后,url匹配之前調(diào)用'''
print('----process_request----')
# return HttpResponse('process_request') # 默認放行,不攔截請求。
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對象,表示攔截,直接執(zhí)行process_response函數(shù)。
def process_response(self, request, response):
'''視圖函數(shù)調(diào)用之后,response返回瀏覽器之前'''
print('----process_response----')
return response # 一般會返回響應(yīng)。
# 定義中間件類,處理全局異常
class ExceptionTestMiddleware(object):
# 如果注冊多個process_exception函數(shù),那么函數(shù)的執(zhí)行順序與注冊的順序相反。(其他中間件函數(shù)與注冊順序一致)
# 中間件函數(shù),用到哪個就寫哪個,不需要寫所有的中間件函數(shù)。
def process_exception(self, request, exception):
'''視圖函數(shù)發(fā)生異常時調(diào)用'''
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函數(shù),那么函數(shù)的執(zhí)行順序與注冊的順序相反。 )

希望本文所述對大家基于Django框架的Python程序設(shè)計有所幫助。
相關(guān)文章
Django使用AJAX調(diào)用自己寫的API接口的方法
這篇文章主要介紹了Django使用AJAX調(diào)用自己寫的API接口的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03
Python腳本在Appium庫上對移動應(yīng)用實現(xiàn)自動化測試
這篇文章主要介紹了使用Python的Appium庫對移動應(yīng)用實現(xiàn)自動化測試的教程,屬于Python腳本的一個自動化應(yīng)用,需要的朋友可以參考下2015-04-04
詳細解讀tornado協(xié)程(coroutine)原理
這篇文章主要介紹了詳細解讀tornado協(xié)程(coroutine)原理,涉及協(xié)程定義,生成器和yield語義,F(xiàn)uture對象,ioloop對象,函數(shù)裝飾器coroutine等相關(guān)內(nèi)容,具有一定借鑒價值,需要的朋友可以參考下2018-01-01
Tensorflow中使用tfrecord方式讀取數(shù)據(jù)的方法
這篇文章主要介紹了Tensorflow中使用tfrecord方式讀取數(shù)據(jù)的方法,適用于數(shù)據(jù)較多時,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06
Python下實現(xiàn)的RSA加密/解密及簽名/驗證功能示例
這篇文章主要介紹了Python下實現(xiàn)的RSA加密/解密及簽名/驗證功能,結(jié)合具體實例形式分析了Python中RSA加密、解密的實現(xiàn)方法及簽名、驗證功能的使用技巧,需要的朋友可以參考下2017-07-07

