ビューのデコレータLink to this heading
Djangoでは、さまざまなHTTP機能をサポートするために、ビューに適用できるいくつかのデコレータが提供されています。
ここで紹介するデコレータをクラスベースのビューで使用する方法については、 クラスをデコレーションする を参照してください。
特定のHTTPメソッドのみ許可するLink to this heading
django.views.decorators.http にあるデコレータを使用することで、リクエストメソッドに基づいてビューへのアクセスを制限できます。アクセスが制限されるとき、これらのデコレータは django.http.HttpResponseNotAllowed を返します。
- require_http_methods(request_method_list)Link to this definition
ビューが特定のリクエストメソッドのみを受け付けるようにするデコレータです。以下のように使います。
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()Link to this definition
ビューがGETメソッドのみを受け付けるようにするデコレータです。
- require_POST()Link to this definition
ビューがPOSTメソッドのみを受け付けるようにするデコレータです。
- require_safe()Link to this definition
ビューが GET メソッドと HEAD メソッドのみを受け付けるようにするデコレータです。これらのメソッドは、要求されたリソースを取得する以外の動作をする意図を持たないので、一般的に "安全である" と考えられています。
条件付きのビュー処理Link to this heading
django.views.decorators.http にある以下のデコレータを使って、特定のビューのキャッシュ動作を制御できます。
- condition(etag_func=None, last_modified_func=None)Link to this definition
- etag(etag_func)Link to this definition
- last_modified(last_modified_func)Link to this definition
これらのデコレータは
ETagとLast-Modifiedヘッダを生成するために使用できます。詳細は 条件付きのビュー処理 を参照してください。
GZip 圧縮Link to this heading
django.views.decorators.gzip のデコレータは、ビュー単位でコンテンツの圧縮を制御します。
- gzip_page()Link to this definition
このデコレータは、ブラウザが gzip 圧縮を許可している場合にコンテンツを圧縮します。それに応じて
Varyヘッダを設定し、キャッシュがそのストレージをAccept-Encodingヘッダに基づいて行うようにします。
Vary ヘッダLink to this heading
django.views.decorators.vary のデコレータを使って、特定のリクエストヘッダに基づいてキャッシュを制御できます。
- vary_on_cookie(func)Link to this definition
- vary_on_headers(*headers)Link to this definition
Varyヘッダーはキャッシュメカニズムがキャッシュキーを構築するときにどのリクエストヘッダを考慮すべきかを定義します。詳しくは vary ヘッダを使う を参照してください。
キャッシュLink to this heading
django.views.decorators.cache のデコレータで、サーバーサイドとクライアントサイドのキャッシュを制御できます。
- cache_control(**kwargs)Link to this definition
このデコレータはレスポンスの
Cache-Controlヘッダにキーワード引数を全て追加してパッチを適用します。変換の詳細についてはpatch_cache_control()を参照してください。
- never_cache(view_func)Link to this definition
このデコレータは、現在の日付/時刻に
Expiresヘッダを追加します。このデコレータは、
Cache-Control: max-age=0, no-cache, no-store, must-revalidate, privateヘッダをレスポンスに追加し、ページがキャッシュされないように設定します。それぞれのヘッダーは、未設定の場合にのみ追加されます。
Common(一般)Link to this heading
django.views.decorators.common のデコレータで、 CommonMiddleware の動作をビューごとにカスタマイズできます。
- no_append_slash()Link to this definition
このデコレータは、個々のビューを
APPEND_SLASHURL 正規化から除外します。