溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python 中怎么利用Django實現全局異常處理操作

發布時間:2021-07-22 17:15:12 來源:億速云 閱讀:474 作者:Leah 欄目:開發技術

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函數,那么函數的執行順序與注冊的順序相反。
)

Python 中怎么利用Django實現全局異常處理操作

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女