欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)文章

最新評論