組み込みのクラスベースビューAPI—Djangoドキュメント

提供:Dev Guides
< DjangoDjango/docs/3.2.x/ref/class-based-views/index
移動先:案内検索

組み込みのクラスベースのビューAPI

クラスベースのビューAPIリファレンス。 紹介資料については、クラスベースビュートピックガイドを参照してください。

仕様

クラスベースのビューによって提供される各リクエストには、独立した状態があります。 したがって、インスタンスに状態変数を格納するのは安全です(つまり、self.foo = 3はスレッドセーフな操作です)。

クラスベースのビューは、 as_view()クラスメソッドを使用してURLパターンにデプロイされます。

urlpatterns = [
    path('view/', MyView.as_view(size=42)),
]

ビュー引数を使用したスレッドセーフ

ビューに渡された引数は、ビューのすべてのインスタンス間で共有されます。 つまり、リスト、ディクショナリ、またはその他の可変オブジェクトをビューの引数として使用しないでください。 これを行って共有オブジェクトを変更すると、ビューにアクセスする1人のユーザーのアクションが、同じビューにアクセスする後続のユーザーに影響を与える可能性があります。


as_view()に渡された引数は、リクエストの処理に使用されるインスタンスに割り当てられます。 前の例を使用すると、これはMyViewのすべてのリクエストがself.sizeを使用できることを意味します。 引数は、クラスにすでに存在する属性に対応している必要があります(hasattrチェックでTrueを返します)。


基本ビューと一般ビュー

基本クラスベースのビューは、ビューと考えることができ、単独で使用することも、継承することもできます。 プロジェクトに必要なすべての機能を提供できるとは限りません。その場合、ベースビューで実行できることを拡張するミックスインがあります。

Djangoの汎用ビューは、これらの基本ビューから構築されており、オブジェクトの詳細を表示するなどの一般的な使用パターンのショートカットとして開発されました。 これらは、ビュー開発で見られる特定の一般的なイディオムとパターンを採用し、それらを抽象化するため、自分で繰り返すことなく、データの一般的なビューをすばやく書き込むことができます。

ほとんどの一般的なビューには、QuerySetインスタンスであるquerysetキーが必要です。 QuerySetオブジェクトの詳細については、クエリの作成を参照してください。