W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
除前面說的基礎請求/響應中間件模式外,你可以給基于類的中間件添加三種其他特殊方法:
?request
? 是一個 ?HttpRequest
?對象。?view_func
?是一個 Django 將要使用的 Python 函數。(這是一個真實的函數對象,不是函數的名稱);?view_args
?是一個用來傳遞給視圖的位置參數列表,;?view_kwargs
?是一個用來傳遞給視圖的關鍵字參數字典。?view_args
?和 ?view_kwargs
?都不包含第一個視圖參數 ( ?request
?)。
?process_view()
? 只在 Django 調用視圖前被調用。
它應該返回 ?None
?或 ?HttpResponse
?對象。如果它返回 ?None
?,Django 將繼續(xù)處理這個請求,執(zhí)行任何其他的 ?process_view()
? ,然后執(zhí)行相應的視圖。如果它返回 ?HttpResponse
?對象,Django 不會去影響調用相應的視圖;它會將響應中間件應用到 ?HttpResponse
?并返回結果。
注解:在視圖運行前或在 ?process_view()
? 內訪問中間件里的 ?request.POST
? 將阻止中間件之后運行的任何視圖修改請求的上傳處理程序 (?modify the upload handlers for the request
? ),通常應該避免這樣。
?CsrfViewMiddleware
?類可以被視為一個例外,因為它提供 ?csrf_exempt()
? 和 ?csrf_protect()
? 裝飾器,它們允許視圖完全控制 ?CSRF
?驗證在什么時候進行。
?request
?是一個 ?HttpRequest
?對象。 ?exception
?是一個由視圖函數引發(fā)的 ?Exception
? 對象。
當視圖引發(fā)異常時,Django 會調用 ?process_exception()
?。?process_exception()
? 應該返回 ?None
?或 ?HttpResponse
?對象。如果它返回一個 ?HttpResponse
?對象,模板響應和響應中間件將被應用且會將結果響應返回瀏覽器。否則,就會開始默認異常處理( ?default exception handling
? )。
再次,中間件在響應階段會按照相反的順序運行,其中包括 ?process_exception
?。如果異常中間件返回一個響應,那么中間件之上的中間件類的 ?process_exception
?方法根本不會被調用。
?request
?是一個 ?HttpRequest
?對象。?response
?是 ?TemplateResponse
?對象(或者等效對象),它通過 Django 視圖或中間件返回。
?process_template_response()
? 在視圖被完全執(zhí)行后調用,如果響應實例有 ?render()
? 方法,表明它是一個 ?TemplateResponse
?或等效對象。
它必須返回一個實現了 ?render
?方法的響應對象。它可以通過改變?response.template_name
?和 ?response.context_data
? 來改變給定的 ?response
?,或者它可以創(chuàng)建和返回全新的 ?TemplateResponse
?或等效對象。
你不需要顯式地渲染響應——一旦所有模板中間件被調用,響應會被自動渲染。
中間件會在響應階段按照相反的順序運行,其中包括 ?process_template_response()
? 。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯系方式:
更多建議: