檢視裝飾器¶
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
中的以下裝飾器可用於控制特定檢視的快取行為。
GZip 壓縮¶
django.views.decorators.gzip
中的裝飾器可控制每個檢視的內容壓縮。
- gzip_page()¶
如果瀏覽器允許 gzip 壓縮,此裝飾器會壓縮內容。它會相應地設定
Vary
標頭,以便快取將其儲存基於Accept-Encoding
標頭。在 Django 5.0 中變更新增了對包裝非同步檢視函式的支援。
Vary 標頭¶
django.views.decorators.vary
中的裝飾器可用於根據特定的請求標頭控制快取。
- vary_on_cookie(func)¶
- 在 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 中變更新增了對包裝非同步檢視函式的支援。
通用¶
django.views.decorators.common
中的裝飾器允許對 CommonMiddleware
行為進行每個檢視的自訂。
- no_append_slash()[原始碼]¶
此裝飾器允許將個別檢視排除在
APPEND_SLASH
URL 正規化之外。在 Django 5.0 中變更新增了對包裝非同步檢視函式的支援。