デコレータを表示する
Djangoは、さまざまなHTTP機能をサポートするためにビューに適用できるいくつかのデコレータを提供します。
これらのデコレータをクラスベースのビューで使用する方法については、クラスの装飾を参照してください。
許可された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メソッドのみを受け入れることを要求するデコレータ。 これらのメソッドは、要求されたリソースを取得する以外のアクションを実行する意味を持たないため、一般に「安全」と見なされます。
ノート
Webサーバーは、ヘッダーを変更せずにHEADリクエストへの応答のコンテンツを自動的に削除する必要があるため、ビューでGETリクエストとまったく同じようにHEADリクエストを処理できます。 リンクチェッカーなどの一部のソフトウェアはHEADリクエストに依存しているため、
require_GET
の代わりにrequire_safe
を使用することをお勧めします。
条件付きビュー処理
django.views.decorators.http の次のデコレータを使用して、特定のビューでのキャッシュ動作を制御できます。
- condition(etag_func=None, last_modified_func=None)
- etag(etag_func)
- last_modified(last_modified_func)
- これらのデコレータは、
ETag
およびLast-Modified
ヘッダーを生成するために使用できます。 条件付きビュー処理を参照してください。
GZip圧縮
django.views.decorators.gzip のデコレータは、ビューごとにコンテンツの圧縮を制御します。
- gzip_page()
- ブラウザがgzip圧縮を許可している場合、このデコレータはコンテンツを圧縮します。 それに応じて
Vary
ヘッダーを設定し、キャッシュがAccept-Encoding
ヘッダーに基づいてストレージを作成するようにします。
ヘッダーを変更する
django.views.decorators.vary のデコレータを使用して、特定のリクエストヘッダーに基づいてキャッシュを制御できます。
- vary_on_cookie(func)
- vary_on_headers(*headers)
Vary
ヘッダーは、キャッシュキーを構築するときにキャッシュメカニズムが考慮すべき要求ヘッダーを定義します。さまざまなヘッダーの使用を参照してください。
キャッシング
django.views.decorators.cache のデコレータは、サーバーとクライアント側のキャッシュを制御します。
- cache_control(**kwargs)
- このデコレータは、すべてのキーワード引数を追加することにより、応答の
Cache-Control
ヘッダーにパッチを適用します。 変換の詳細については、 patch_cache_control()を参照してください。
- never_cache(view_func)
- このデコレータは、
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
ヘッダーを応答に追加して、ページがキャッシュされてはならないことを示します。