掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
Django 提供很多裝飾器,它們可以為視圖支持多種 HTTP 特性。

在 ?django.views.decorators.http? 中的裝飾器可以用來根據(jù)請求方法來限制對視圖的訪問。如果條件不滿足,這些裝飾器將返回 ?django.http.HttpResponseNotAllowed? 。
裝飾器可以要求視圖只接受特定的請求方法。用法如下:
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注意請求方法應該是大寫
裝飾器可以要求視圖只接受 GET 方法。
裝飾器可以要求視圖只接受 POST 方法。
裝飾器可以要求視圖只接收 GET 和 HEAD 方法。這些方法通常被認為是安全的,因為它們除了檢索請求的資源外,沒有特別的操作。
注解:Web 服務器自動刪除對 ?HEAD ?請求的相應內(nèi)容,并保持頭部不變,所以你可以像處理視圖里的 ?GET ?請求一樣處理 ?HEAD ?請求。因為一些軟件依賴 ?HEAD ?請求(比如鏈接檢測器),因此你需要使用 ?require_safe ?而不是 ?require_GET ?。
下面 ?django.views.decorators.http? 的裝飾器被用來控制特殊視圖中的緩存行為。
condition(etag_func=None, last_modified_func=None)?etag(etag_func)?last_modified(last_modified_func)?這些裝飾器被用來生成 ?ETag ?和 ?Last-Modified? 頭部
?django.views.decorators.gzip? 里的裝飾器控制基于每個視圖的內(nèi)容壓縮。
如果瀏覽器允許 ?gzip ?壓縮,這個裝飾器會壓縮內(nèi)容。 它相應地設(shè)置 ?Vary ?表頭,以便緩存將其存儲基于 ?Accept-Encoding? 表頭。
?django.views.decorators.vary? 中的裝飾器可用于控制基于特定請求標頭的緩存。
vary_on_cookie(func)?vary_on_headers(*headers)??Vary ?表頭定義了緩存機制在構(gòu)建其緩存鍵時應考慮哪些請求表頭。
?django.views.decorators.cache? 中的裝飾器控制服務器及客戶端的緩存。
這個裝飾器通過添加所有關(guān)鍵字參數(shù)來修補響應的 ?Cache-Control? 頭。
此裝飾器將 ?Expires ?表頭添加到當前日期/時間。
這個裝飾器在響應中添加一個 ?Cache-Control: max-age=0, no-cache, no-store, must-revalidate, private? 表頭,以指示永遠不應該緩存頁面。
每個表頭僅在尚未設(shè)置時才添加。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流