99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Django4.0 中間件-升級Django1.10之前的中間件

2022-03-16 17:59 更新

class django.utils.deprecation.MiddlewareMixin

Django 提供了 ?django.utils.deprecation.MiddlewareMixin? 來方便創(chuàng)建同時兼容 ?MIDDLEWARE ?和舊的 ?MIDDLEWARE_CLASSES ?的中間件類,并支持同步和異步請求。Django 所包含的所有中間件類都兼容這兩種配置。

?mixin ?提供了一個 ?__init__() ?方法,它需要一個 ?get_response ?參數(shù),并將其存儲在 ?self.get_response? 中。

?__call__()? 方法:

  1. 調(diào)用 ?self.process_request(request)? (如果被定義過)。
  2. 調(diào)用 ?self.get_response(request)? 來從后續(xù)的中間件和視圖得到響應(yīng)。
  3. 調(diào)用 ?self.process_response(request, response)? (如果被定義過)。
  4. 返回響應(yīng)。

如果和 ?MIDDLEWARE_CLASSES ?一起使用,?__call__() ?方法將永遠(yuǎn)不會被使用;Django 會直接調(diào)用 ?process_request()? 和 ?process_response() ?。
在大多數(shù)情況下,從這個 ?Mixin ?中繼承就足以使一個舊式中間件與新系統(tǒng)兼容,并具有足夠的向后兼容性。新的短路語義對現(xiàn)有中間件無害甚至有益。在少數(shù)情況下,中間件類可能需要一些改變來適應(yīng)新的語義。
?MIDDLEWARE ?和 ?MIDDLEWARE_CLASSES ?在使用上有些行為差異:

  1. ?MIDDLEWARE_CLASSES ?下,每個中間件將始終調(diào)用它的 ?process_response ?方法,即使早期的中間件通過從其 ?process_response ?方法返回響應(yīng)而短路。?MIDDLEWARE ?下,中間件行為更像洋蔥:響應(yīng)在輸出時經(jīng)過的層與在輸入時看到請求的層相同。如果一個中間件短路,只有那個中間件和之前的中間件可以看到響應(yīng)。
  2. 在 ?MIDDLEWARE_CLASSES ?下,?process_exception ?應(yīng)用于中間件 ?process_request ?方法引發(fā)的異常。在 ?MIDDLEWARE ?下,?process_exception ?只應(yīng)用于視圖引發(fā)的異常(或者從 ?TemplateResponse ?的 ?render ?方法引發(fā)的異常)。中間件引發(fā)的異常被轉(zhuǎn)換為合適的 HTTP 響應(yīng),然后傳遞到下一個中間件。
  3. ?MIDDLEWARE_CLASSES ?下,如果 ?process_response ?方法引發(fā)了異常,所有更早之前的中間件的 ?process_response ?方法會被跳過,并一直返回 ?500 Internal Server Error? 的 HTTP 響應(yīng)(即使引發(fā)的異常是例如 Http404 )。在 ?MIDDLEWARE ?,一個中間件引發(fā)的異常將立刻被轉(zhuǎn)換為合適的 HTTP 響應(yīng),然后下一個中間件將看到響應(yīng)。中間件不會因為中間件引發(fā)異常而被跳過。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號