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