Djangoでは、さまざまなHTTP機能をサポートするために、ビューに適用できるいくつかのデコレータが提供されています。
ここで紹介するデコレータをクラスベースのビューで使用する方法については、 クラスをデコレーションする を参照してください。
django.views.decorators.http にあるデコレータを使用することで、リクエストメソッドに基づいてビューへのアクセスを制限できます。アクセスが制限されるとき、これらのデコレータは 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リクエストから自動的に削除するべきです。そのため、ビューではHEADリクエストをGETリクエストとまったく同じように処理できます。リンクチェッカーなどの一部のソフトウェアはHEADリクエストに依存しているため、 require_GET の代わりに require_safe を使用することをお勧めします。
非同期ビュー関数のラップをサポートしました。
django.views.decorators.http にある以下のデコレータを使って、特定のビューのキャッシュ動作を制御できます。
これらのデコレータは ETag と Last-Modified ヘッダを生成するために使用できます。詳細は 条件付きのビュー処理 を参照してください。
非同期ビュー関数のラップをサポートしました。
django.views.decorators.gzip のデコレータは、ビュー単位でコンテンツの圧縮を制御します。
このデコレータは、ブラウザが gzip 圧縮を許可している場合にコンテンツを圧縮します。それに応じて Vary ヘッダを設定し、キャッシュがそのストレージを Accept-Encoding ヘッダに基づいて行うようにします。
非同期ビュー関数のラップをサポートしました。
django.views.decorators.vary のデコレータを使って、特定のリクエストヘッダに基づいてキャッシュを制御できます。
非同期ビュー関数のラップをサポートしました。
Vary ヘッダーはキャッシュメカニズムがキャッシュキーを構築するときにどのリクエストヘッダを考慮すべきかを定義します。
詳しくは vary ヘッダを使う を参照してください。
非同期ビュー関数のラップをサポートしました。
django.views.decorators.cache のデコレータで、サーバーサイドとクライアントサイドのキャッシュを制御できます。
このデコレータはレスポンスの Cache-Control ヘッダにキーワード引数を全て追加してパッチを適用します。変換の詳細については patch_cache_control() を参照してください。
非同期ビュー関数のラップをサポートしました。
django.views.decorators.common のデコレータで、 CommonMiddleware の動作をビューごとにカスタマイズできます。
このデコレータは、個々のビューを APPEND_SLASH URL 正規化から除外します。
非同期ビュー関数のラップをサポートしました。
4月 02, 2025