ビルトインのクラスベースビュー API

クラスベースビュー API のリファレンスです。入門的な内容については クラスベースビュー トピックガイド を参照してください。

仕様

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

A class-based view is deployed into a URL pattern using the as_view() classmethod:

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

ビューの引数によるスレッドの安全性

ビューから渡される引数は、ビューのすべてのインスタンスに共有されます。なのでリストや辞書、または他のミュータブルなオブジェクトを使用しないでください。共有オブジェクトが変更された場合、ビューにアクセスしたあるユーザーのアクションが、同じビューにアクセスする後続のユーザーに影響を与える可能性があります。

Arguments passed into as_view() will be assigned onto the instance that is used to service a request. Using the previous example, this means that every request on MyView is able to use self.size. Arguments must correspond to attributes that already exist on the class (return True on a hasattr check).

ベースビュー vs ジェネリックビュー

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

Django のジェネリックビューは、ベースビューから構築され、オブジェクトの詳細を表示するなどの一般的な使用パターンのショートカットとして開発されました。ビューの開発で見つかった一定の共通したイディオムやパターンを取り、それらを抽象化して、自分で繰り返し行わなくてもデータの一般的なビューを素早く作成できます。

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