鍍金池/ 教程/ Python/ 視圖裝飾器
編寫自定義存儲系統(tǒng)
高級
編寫你的第一個Django應用,第5部分
視圖層
Django管理文檔生成器
編寫你的第一個 Django 程序 第3部分
編寫你的第一個Django應用,第6部分
模型層
中間件
測試
數(shù)據(jù)庫訪問優(yōu)化
文件上傳
中間件
驗證器
基于類的內(nèi)建通用視圖
部署靜態(tài)文件
使用Django認證系統(tǒng)
高級教程:如何編寫可重用的應用
Model 類參考
Django 初探
使用Django輸出PDF
模型的實例
模型
文件上傳
進行原始的sql查詢
面向程序員
中間件
編寫數(shù)據(jù)庫遷移
TemplateResponse 和 SimpleTemplateResponse
異常
Django中的測試
基礎
管理器
File對象
URL調(diào)度器
加密簽名
國際化和本地化
日志
查詢集
django-admin 和 manage.py
使用基于類的視圖處理表單
聚合
內(nèi)建基于類的視圖的API
如何使用會話
部署 Django
其它
其它核心功能
高級
Django中的密碼管理
模型元選項
按需內(nèi)容處理
查找 API 參考
高級
Django 的快捷函數(shù)
Django 的設置
Admin
開發(fā)過程
新手入門
基于類的視圖
模型實例參考
信號
表單素材 ( <code>Media</code> 類)
自定義查找
常見的網(wǎng)站應用工具
模型
django.contrib.humanize
Django模版語言
點擊劫持保護
管理操作
編寫你的第一個 Django 程序 第2部分
Django安全
模式編輯器
多數(shù)據(jù)庫
部署
基于類的視圖
內(nèi)建的視圖
視圖裝飾器
面向設計師
編寫視圖
應用程序
如何使用WSGI 部署
參考
表單 API
文件儲存API
認證
國際化和本地化
錯誤報告
基礎
基礎
將遺留數(shù)據(jù)庫整合到Django
教程
Django異常
編寫你的第一個 Django 程序 第4部分
遷移
分頁
重定向應用
表單
從零開始
為模型提供初始數(shù)據(jù)
設置
使用Django輸出CSV
關聯(lián)對象參考
使用表單
Django 中的用戶認證
快速安裝指南
安全問題歸檔
數(shù)據(jù)庫函數(shù)
編寫自定義的django-admin命令
高級教程
管理文件
格式本地化
基于類的通用視圖 —— 索引
安全
系統(tǒng)檢查框架
為Django編寫首個補丁
模板層
Widgets
編寫你的第一個 Django 程序 第1部分
執(zhí)行查詢

視圖裝飾器

Django為視圖提供了數(shù)個裝飾器,用以支持相關的HTTP服務。

允許的HTTP 方法

django.views.decorators.http 包里的裝飾器可以基于請求的方法來限制對視圖的訪問。若條件不滿足會返回 django.http.HttpResponseNotAllowed。

require_http_methods(request_method_list)[source]

限制視圖只能服務規(guī)定的http方法。用法:

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 方法的裝飾器。 這些方法通常被認為是安全的,因為方法不該有請求資源以外的目的。

Django 會自動清除對HEAD 請求的響應中的內(nèi)容而只保留頭部,所以在你的視圖中你處理HEAD 請求的方式可以完全與GET 請求一致。因為某些軟件,例如鏈接檢查器,依賴于HEAD 請求,所以你可能應該使用require_safe 而不是require_GET。

可控制的視圖處理

django.views.decorators.http 中的以下裝飾器可以用來控制特定視圖的緩存行為。

condition(etag_func=None, last_modified_func=None)[source]

etag(etag_func)[source]

last_modified(last_modified_func)[source]

這些裝飾器可以用于生成ETag 和Last-Modified 頭部;參考 conditional view processing.

GZip 壓縮

django.views.decorators.gzip 里的裝飾器基于每個視圖控制其內(nèi)容壓縮。

gzip_page()

如果瀏覽器允許gzip 壓縮,這個裝飾器將對內(nèi)容進行壓縮。它設置相應的Vary頭部,以使得緩存根據(jù)Accept-Encoding頭來存儲信息。

Vary 頭部

django.views.decorators.vary 可以用來基于特定的請求頭部來控制緩存。

vary_on_cookie(func)[source]

vary_on_headers(*headers)[source]

到當構建緩存的鍵時,Vary 頭部定義一個緩存機制應該考慮的請求頭。

參見使用vary 頭部。

譯者:Django 文檔協(xié)作翻譯小組,原文:Decorators。

本文以 CC BY-NC-SA 3.0 協(xié)議發(fā)布,轉(zhuǎn)載請保留作者署名和文章出處。

Django 文檔協(xié)作翻譯小組人手緊缺,有興趣的朋友可以加入我們,完全公益性質(zhì)。交流群:467338606。

上一篇:如何使用會話下一篇:模型