檢視裝飾器

Django 提供了幾個可以應用於檢視的裝飾器,以支援各種 HTTP 功能。

請參閱裝飾類別,了解如何將這些裝飾器用於基於類別的檢視。

允許的 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

請注意,請求方法應使用大寫字母。

在 Django 5.0 中變更

新增了對包裝非同步檢視函式的支援。

require_GET()

此裝飾器用於要求檢視僅接受 GET 方法。

在 Django 5.0 中變更

新增了對包裝非同步檢視函式的支援。

require_POST()

此裝飾器用於要求檢視僅接受 POST 方法。

在 Django 5.0 中變更

新增了對包裝非同步檢視函式的支援。

require_safe()

此裝飾器用於要求檢視僅接受 GET 和 HEAD 方法。這些方法通常被認為是「安全的」,因為它們不應具有執行請求資源以外的其他動作的意義。

注意

Web 伺服器應自動移除對 HEAD 請求的回應內容,同時保持標頭不變,因此您可以在檢視中像處理 GET 請求一樣處理 HEAD 請求。由於某些軟體(例如連結檢查器)依賴 HEAD 請求,您可能更喜歡使用 require_safe 而不是 require_GET

在 Django 5.0 中變更

新增了對包裝非同步檢視函式的支援。

條件檢視處理

django.views.decorators.http 中的以下裝飾器可用於控制特定檢視的快取行為。

condition(etag_func=None, last_modified_func=None)[原始碼]
etag(etag_func)[原始碼]
last_modified(last_modified_func)[原始碼]

這些裝飾器可用於產生 ETagLast-Modified 標頭;請參閱條件檢視處理

在 Django 5.0 中變更

新增了對包裝非同步檢視函式的支援。

GZip 壓縮

django.views.decorators.gzip 中的裝飾器可控制每個檢視的內容壓縮。

gzip_page()

如果瀏覽器允許 gzip 壓縮,此裝飾器會壓縮內容。它會相應地設定 Vary 標頭,以便快取將其儲存基於 Accept-Encoding 標頭。

在 Django 5.0 中變更

新增了對包裝非同步檢視函式的支援。

Vary 標頭

django.views.decorators.vary 中的裝飾器可用於根據特定的請求標頭控制快取。

在 Django 5.0 中變更

新增了對包裝非同步檢視函式的支援。

vary_on_headers(*headers)[原始碼]

Vary 標頭定義快取機制在建立其快取索引鍵時應考慮哪些請求標頭。

請參閱使用 Vary 標頭

在 Django 5.0 中變更

新增了對包裝非同步檢視函式的支援。

快取

django.views.decorators.cache 中的裝飾器可控制伺服器端和用戶端快取。

cache_control(**kwargs)[原始碼]

此裝飾器會將回應的 Cache-Control 標頭套用修補程式,方法是將所有關鍵字引數新增至其中。請參閱 patch_cache_control() 以了解轉換的詳細資訊。

在 Django 5.0 中變更

新增了對包裝非同步檢視函式的支援。

never_cache(view_func)[原始碼]

此裝飾器會將 Expires 標頭新增至目前的日期/時間。

此裝飾器會將 Cache-Control: max-age=0, no-cache, no-store, must-revalidate, private 標頭新增至回應,以表示不應快取頁面。

只有在尚未設定的情況下,才會新增每個標頭。

在 Django 5.0 中變更

新增了對包裝非同步檢視函式的支援。

通用

django.views.decorators.common 中的裝飾器允許對 CommonMiddleware 行為進行每個檢視的自訂。

no_append_slash()[原始碼]

此裝飾器允許將個別檢視排除在 APPEND_SLASH URL 正規化之外。

在 Django 5.0 中變更

新增了對包裝非同步檢視函式的支援。

返回頂端