ビルトインのクラスベースビュー APILink to this heading
クラスベースビュー API のリファレンスです。入門的な内容については クラスベースビュー トピックガイド を参照してください。
仕様Link to this heading
クラスベースビューによって提供される各リクエストは、独立した状態を持っています。そのため、状態変数をインスタンスに格納するのは安全です (例: self.foo = 3 はスレッドセーフな操作です) 。
クラスベースビューは as_view() クラスメソッドを使って URL パターンに記述されます。
urlpatterns = [
path("view/", MyView.as_view(size=42)),
]
as_view() に渡された引数は、リクエストを処理するために使用されるインスタンスに割り当てられます。 前の例を使用すると、MyView のすべてのリクエストが self.size を使用できることを意味します。 引数はクラスにすでに存在する属性に対応していなければなりません (hasattr チェックで True を返します)。
ベースビュー vs ジェネリックビューLink to this heading
ベースクラスベースのビューは 親の ビューとして考えることができ、それ自体で使用することも継承することもできます。プロジェクトに必要なすべての機能を提供していないかもしれませんが、その場合はベースビューが行えることを拡張するミックスインがあります。
Django のジェネリックビューは、ベースビューから構築され、オブジェクトの詳細を表示するなどの一般的な使用パターンのショートカットとして開発されました。ビューの開発で見つかった一定の共通したイディオムやパターンを取り、それらを抽象化して、自分で繰り返し行わなくてもデータの一般的なビューを素早く作成できます。
ほとんどのジェネリックビューでは、QuerySet インスタンスである queryset キーが必要です。 QuerySet オブジェクトの詳細については、 クエリを作成する を参照してください。