W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Django 提供很多裝飾器,它們可以為視圖支持多種 HTTP 特性。
在 ?django.views.decorators.http
? 中的裝飾器可以用來(lái)根據(jù)請(qǐng)求方法來(lái)限制對(duì)視圖的訪問(wèn)。如果條件不滿足,這些裝飾器將返回 ?django.http.HttpResponseNotAllowed
? 。
裝飾器可以要求視圖只接受特定的請(qǐng)求方法。用法如下:
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
注意請(qǐng)求方法應(yīng)該是大寫
裝飾器可以要求視圖只接受 GET 方法。
裝飾器可以要求視圖只接受 POST 方法。
裝飾器可以要求視圖只接收 GET 和 HEAD 方法。這些方法通常被認(rèn)為是安全的,因?yàn)樗鼈兂藱z索請(qǐng)求的資源外,沒(méi)有特別的操作。
注解:Web 服務(wù)器自動(dòng)刪除對(duì) ?HEAD
?請(qǐng)求的相應(yīng)內(nèi)容,并保持頭部不變,所以你可以像處理視圖里的 ?GET
?請(qǐng)求一樣處理 ?HEAD
?請(qǐng)求。因?yàn)橐恍┸浖蕾??HEAD
?請(qǐng)求(比如鏈接檢測(cè)器),因此你需要使用 ?require_safe
?而不是 ?require_GET
?。
下面 ?django.views.decorators.http
? 的裝飾器被用來(lái)控制特殊視圖中的緩存行為。
condition(etag_func=None, last_modified_func=None)
?etag(etag_func)
?last_modified(last_modified_func)
?這些裝飾器被用來(lái)生成 ?ETag
?和 ?Last-Modified
? 頭部
?django.views.decorators.gzip
? 里的裝飾器控制基于每個(gè)視圖的內(nèi)容壓縮。
如果瀏覽器允許 ?gzip
?壓縮,這個(gè)裝飾器會(huì)壓縮內(nèi)容。 它相應(yīng)地設(shè)置 ?Vary
?表頭,以便緩存將其存儲(chǔ)基于 ?Accept-Encoding
? 表頭。
?django.views.decorators.vary
? 中的裝飾器可用于控制基于特定請(qǐng)求標(biāo)頭的緩存。
vary_on_cookie(func)
?vary_on_headers(*headers)
??Vary
?表頭定義了緩存機(jī)制在構(gòu)建其緩存鍵時(shí)應(yīng)考慮哪些請(qǐng)求表頭。
?django.views.decorators.cache
? 中的裝飾器控制服務(wù)器及客戶端的緩存。
這個(gè)裝飾器通過(guò)添加所有關(guān)鍵字參數(shù)來(lái)修補(bǔ)響應(yīng)的 ?Cache-Control
? 頭。
此裝飾器將 ?Expires
?表頭添加到當(dāng)前日期/時(shí)間。
這個(gè)裝飾器在響應(yīng)中添加一個(gè) ?Cache-Control: max-age=0, no-cache, no-store, must-revalidate, private
? 表頭,以指示永遠(yuǎn)不應(yīng)該緩存頁(yè)面。
每個(gè)表頭僅在尚未設(shè)置時(shí)才添加。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: