django 視圖裝飾器(View decorators)

視圖裝飾器(View decorators)

Django提供了幾個裝飾器,可以應用於視圖來支持各種HTTP特性。

有關如何使用基於類的視圖的這些裝飾器,請參閱 我的 django 類視圖。

允許HTTP方法、

django.views.decorators.http中的裝飾器可以用於根據請求方法限制對視圖的訪問。如果條件不滿足, 這些裝飾器將返回django.http.HttpResponseNotAllowed

require_http_methods(request_method_list)
用作裝飾器,要求視圖只接受特定的請求方法。用法:

from django.views.decorators.http import require_http_methods

@require_http_methods(["GET", "POST"])
def my_view(request):
    # I can assume now that only GET or POST requests make it this far
    # ...
    pass

注意,請求方法應該是大寫的

require_GET()
用作裝飾器,要求視圖只接受GET方法。

require_POST()
用作裝飾器,要求視圖只接受POST方法。

require_safe()
用作裝飾器,要求視圖只接受GET和HEAD方法。這些方法通常被認爲是“安全的”,因爲除了檢索被請求的資源外,它們沒有其它的重要操作。

注意:
Web服務器在不改變請求頭headers的前提下會自動剝離響應HEAD requests的內容,因此你可以在視圖中像GET請求一樣準確地處理HEAD requests。由於一些軟件,例如鏈接檢查器,依賴於HEAD請求,您可能更喜歡使用require_safe而不是require_GET。

條件視圖處理(Conditional view processing)

django.views.decorators.http*中的下列裝飾器可用於控制特定視圖上的緩存行爲

  • condition(etag_func=None, last_modified_func=None)
  • etag(etag_func)
  • last_modified(last_modified_func)

這些裝飾器可用於生成ETag 和 last - modified header;具體請查閱 “conditional view processing”.

GZip壓縮

django.views.decorators.gzip中的裝飾器控制每個視圖的內容壓縮.如果瀏覽器允許gzip壓縮,這個裝飾器將壓縮內容。它相應地設置了Vary header,以便緩存基於Accept-Encoding header 將其存儲.

Vary headers

django.views.decorators.vary中的裝飾器可以用於根據特定的請求頭來控制緩存。

  • vary_on_cookie(func)
  • vary_on_headers(*headers)

Vary header 定義了緩存機制在構建緩存鍵時應該考慮哪些請求頭。

Caching

django.views.decorator .cache 中的裝飾器 控制服務端和客戶端側緩存

  • cache_control(**kwargs)
    這個裝飾器通過添加所有關鍵字參數來填補響應的Cache-Control頭。查patch_cache_control()獲取轉換的詳細信息。

  • never_cache(view_func)
    該裝飾器向響應添加一個Cache-Control: max-age=0、no-cache、no-store、must-revalidate header,以指示不應該緩存頁面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章