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

Python Django中間件,中間件函數(shù),全局異常處理操作示例

 更新時(shí)間:2019年11月08日 09:49:58   作者:houyanhua1  
這篇文章主要介紹了Python Django中間件,中間件函數(shù),全局異常處理操作,結(jié)合實(shí)例形式分析了Django中間件,中間件函數(shù),全局異常處理相關(guān)操作技巧,需要的朋友可以參考下

本文實(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)文章

最新評(píng)論