デコレータを表示—Djangoドキュメント

提供:Dev Guides
< DjangoDjango/docs/2.2.x/topics/http/decorators
移動先:案内検索

デコレータを表示する

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ヘッダーを応答に追加して、ページがキャッシュされてはならないことを示します。