Django クラスベースで画面を作成 [TemplateView]

2019年11月13日

下記関連ページでは画面をビュー関数を記述して表示させました。本記事では関数ベースではなく、クラスベースによるビューの記述によって画面を作成していきます。

 

Django入門 画面を作成する

 

 

ジェネリックビュー/汎用ビューとは?


 

Djangoには目的に沿った画面を構築するためのクラスがいくつか用意されています。Djangoにおいてこれらのクラスは、ジェネリックビュー汎用ビュー(Generic views)などと呼ばれています。その基本となるクラスの一つがTemplateViewです。

 

本記事ではTemplateViewを利用して画面を作成してみます。※以降userという名前のアプリケーションにおいて構築しています。

 

user/views.py

TemplateViewクラスを継承し、MemberListという名前のサブクラスを作成しています。template_name属性には利用するテンプレートを指定します。その指定したテンプレートに対して、get_context_data()メソッドによってデータを渡すことができます。

 

user/urls.py

5行目

クラスメソッドである as_view() を記述していることに注意して下さい。

 

user/templates/user/member_list.html

 

 

以降はモデル(Memberという名前)によるデータをテンプレートに表示させてみた場合です。モデル自体については下記関連ページをご覧下さい。

 

SQLiteを利用する

 

user/views.py

 

user/templates/user/member_list.html

 

 

ジェネリックビュー/汎用ビューとしてのクラスには様々な種類があり、ListViewは「リストのビュー」で一覧画面の作成に、CreateViewは「編集するためのビュー」で編集画面の作成等に利用されます。その一覧についてはクラスベース汎用ビュー – フラットインデックスをご参照下さい。下記はその一例です。

 

ListView 一覧画面
CreateView 新規作成画面
UpdateView 編集画面
DetailView 詳細画面

 

例えば本記事では詳しく説明しませんが、ListViewを利用すれば下記コードだけでモデル(データベース)のレコードを表示させることができます。※テンプレート(member_list.html)は上述したものと同じです。

 

user/views.py

 

このように画面の内容に応じて適切なジェネリックビュー/汎用ビューを選択すれば、より少ないコードでアプリケーションを構築していくことができます。

 

関連ページ

ListViewでモデルの一覧表示

 

 

参照ページ


 

django ドキュメント

クラスベースビュー

 

ビルトインのクラスベースのジェネリックビュー

 

Base views
TemplateView

 

クラスベース汎用ビュー – フラットインデックス
TemplateView

 

 

 

LINEで送る
Pocket

Copyright © 2019 思考の葉 All Rights Reserved.  プライバシーポリシー