Django には、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
リクエストメソッドは大文字にする必要があります。
require_GET
()¶ビューに GET メソッドのみを許可するデコレータです。
require_POST
()¶ビューに POST メソッドのみを許可するデコレータです。
require_safe
()¶リリースノートを参照してください
ビューに GET と HEAD メソッドのみを許可するデコレータです。 これらのメソッドは、リクエストされたリソースを取得する意外の目的で使用 すべきではないので、一般的に “safe” (安全) と見なされています。
Note
Django は、HEAD リクエストのレスポンスからヘッダは変更せず、
コンテンツを自動的に削除するため、GET リクエストのビューと同様に処理
できます。リンクチェッカー等のソフトウェアは、
HEAD リクエストに依存しているので、 require_GET
よりも
require_safe
を使うほうが良いでしょう。
django.views.decorators.http
内の以下のデコレータは特定のビューの
キャッシュ制御に使用できます。
condition
(etag_func=None, last_modified_func=None)¶etag
(etag_func)¶django.views.decorators.gzip
内のデコレータはビュー単位でコンテンツの
圧縮を制御します。
gzip_page
()¶このデコレータは、ブラウザが gzip 圧縮に対応している場合に圧縮します。
Vary
ヘッダをセットするので、
Accept-Encoding
ヘッダに基づいてキャッシュに保管されます。
django.views.decorators.vary
内のデコレータにより特定のリクエストヘッダ
に基づきキャッシュを制御できます。
vary_on_headers
(*headers)¶Vary
ヘッダは、キャッシュメカニズムがキャッシュキーを生成する際に考慮
すべきリクエストヘッダを定義します。
詳細については Vary ヘッダを使う を参照してください。
Oct 26, 2017