# Django 5.2.9 ドキュメント

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

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

- ベース・ビュー
  - `View`
  - `TemplateView`
  - `RedirectView`
- ジェネリック表示ビュー (Generic display view)
  - `DetailView`
  - `ListView`
- ジェネリック編集ビュー (Generic editing view)
  - `FormView`
  - `CreateView`
  - `UpdateView`
  - `DeleteView`
- ジェネリック日付ビュー
  - `ArchiveIndexView`
  - `YearArchiveView`
  - `MonthArchiveView`
  - `WeekArchiveView`
  - `DayArchiveView`
  - `TodayArchiveView`
  - `DateDetailView`
- クラスベースビューのミックスイン (mixin)
  - シンプルなミックスイン (mixin)
    - `ContextMixin`
    - `TemplateResponseMixin`
  - 単一オブジェクト ミックスイン (Single object mixin)
    - `SingleObjectMixin`
    - `SingleObjectTemplateResponseMixin`
  - 複数オブジェクトミックスイン (Multiple object mixin)
    - `MultipleObjectMixin`
    - `MultipleObjectTemplateResponseMixin`
  - ミックスイン (mixin) を編集する
    - `FormMixin`
    - `ModelFormMixin`
    - `ProcessFormView`
    - `DeletionMixin`
  - 日付ベースのミックスイン (mixin)
    - `YearMixin`
    - `MonthMixin`
    - `DayMixin`
    - `WeekMixin`
    - `DateMixin`
    - `BaseDateListView`
- クラスベースのジェネリックビュー: フラットインデックス
  - シンプルなジェネリックビュー
    - `View`
    - `TemplateView`
    - `RedirectView`
  - 詳細ビュー
    - `DetailView`
  - リストビュー
    - `ListView`
  - 編集ビュー
    - `FormView`
    - `CreateView`
    - `UpdateView`
    - `DeleteView`
  - 日付ベースのビュー
    - `ArchiveIndexView`
    - `YearArchiveView`
    - `MonthArchiveView`
    - `WeekArchiveView`
    - `DayArchiveView`
    - `TodayArchiveView`
    - `DateDetailView`

## 仕様

クラスベースビューによって提供される各リクエストは、独立した状態を持っています。そのため、状態変数をインスタンスに格納するのは安全です (例: `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` オブジェクトの詳細については、 クエリを作成する を参照してください。