ここ記事では、クラスベースビューの利用方法について記載した。
クラスベースビューh関数ビューよりも利用する頻度は高いと思うので、是非参考にされたい。
クラスベースビューの概要
1.クラスベースビューって何?
クラスベースビュー(Class Based View)というのは、直訳するとクラスを起点にしたビューという意味である。
関数ベースビューは、views.pyに関数を定義して、urls.pyにてその関数への紐づけていたが、クラスベースビューでは、views.pyにクラスを定義して、urls.pyにて紐づける。
また、クラスには、各ビューのテンプレートがあらかじめ定義されていて、コーディングを簡略できるようにしてある。
(TemplateView, ListViewなど後述)
2.クラスベースビューの種類(公式)
クラスベースビューには種類があり、用途に応じて使用するビューを選択する。
以下に、代表的なクラスベースビューの種類を紹介する。
詳細は、リンク先の画面に移動して確認して頂きたい。
概要 | URLにキャプチャされたパラメータを含んて、指定されたテンプレートをレンダリングする。 |
用途 |
|
概要 | リストを表示するページを作成する
このビューが実行されている間、self.object_listに、ビューが操作しているオブジェクトのリスト(必ずしもクエリセットではない)が含まれる |
用途 |
|
概要 | 何らかのデータ(オブジェクト)を表示するように設計されている。多くのプロジェクトでは、最も一般的に使用されるビュー。このビューが実行されている間、self.objectはビューが操作しているオブジェクトを含む。 |
用途 | 何らかのオブジェクト(モデル等)からデータを取得して画面に表示する。TemplateViewは、一般的にはトップページに利用されるのに対し、DetailViewは詳細ページに利用される |
概要 | オブジェクトを作成するためのフォームを表示し、バリデーションエラーがある場合はそのフォームを再表示し、オブジェクトを保存するビュー。 |
用途 | ページ上にフォーム表示し、フォームの値が有効なときにDBへ挿入を行う必要がある場合 |
- Form View(django.views.generic.edit.FormView)
概要 | フォームを表示するビュー。エラーが発生した場合、バリデーションエラーでフォームを再表示する。検証が成功した場合は、新しいURLにリダイレクトする。 |
用途 | ページ上にフォームを表示、有効なフォームが送信されたときに特定のアクションを実行したいときに使用する。(例:お問い合わせフォームを持っていてフォーム送信時にEメールを送信する等)
フォームの送信時にデータベースにモデルインスタンスを挿入する場合には、CreateViewを利用する。FormViewはFormを送信して、何らかの処理を行うときに利用する。 |
概要 | 既存のオブジェクトを編集するためのフォーム。バリデーションエラーがある場合はフォームを再表示し、オブジェクトへの変更を保存する。これは、オブジェクトのモデルクラスから自動的に生成されたフォームを使用する(フォームクラスを手動で作成している場合を除く)。 |
用途 | オブジェクト(データ)の編集画面 |
概要 | 確認ページを表示し、既存のオブジェクトを削除するビュー。与えられたオブジェクトはリクエストメソッドがPOSTの場合のみ削除される。このビューがGETで取得されると、同じURLにPOSTするフォームを含む確認ページが表示される。 |
用途 | オブジェクト(データ)を削除するページ |
クラスベースビュービューの超基本的な使い方
クラスベースビュービューの超基本的な使い方として、全ビューのView(django.views.generic.base.View)クラスを継承したビューの作成方法を以下に記述した。
まず、views.pyは以下のように記述する。
- views.py
from django.http import HttpResponse
class CBView(View):
def get(self, requet):
return HttpResponse("CLASS BASED VIEW")
次にurls.pyは以下のようにクラス名.as_view()と記述する。
- urls.py
from django.urls import path
from basic_app import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.CBView.as_view(), name='index')
]
Djangoを立ち上げ、画面にアクセスすると以下のように表示される。
以上、超簡単なClassBaseViewの使い方について記載したが、
次回以降より具体的にTemplateView,CreateView,DetailViewなどについて1つ1つ詳述していきます。