Django:汎用ビュー(プリセットClass) の種類と用途について

Django:汎用ビュー(プリセットClass) の種類と用途について

Django:汎用ビュー(プリセットClass) の種類と用途について

私はあまり使っていませんが、PresetClassって16種類あるそうです。

generic
 ├─ List
 │   └─ ListView :DBのリストを出力するときに使う
 ├─ Detail
 │   └─ DetailView :DBから1レコード抽出するときに使う
 ├─ Edit
 │   ├─ CreateView :データを新規追加するときに使う
 │   ├─ UpdateView :データを更新するときに使う
 │   ├─ DeleteView :データを削除するときに使う
 │   └─ FormView :DBとは関連付けないけどFormを使う時(メール送信型の問い合わせ等)に使う
 ├─ Base
 │   ├─ TemplateView :DBと関連付けていない固定ページなどを表示する際に使う
 │   ├─ View :他のViewの親になるView ※Modelなどとは異なり使いどころはほぼない。
 │   └─ RedirectView :GETの文字列を引き継いでredirectするときに使う
 └── Dates
    ├─ ArchiveIndexView :新しい順にデータを並び替えるときに使う
    ├─ DateDetailView :DetailViewのURLに日付を加えたい時に使う
    ├─ Day :日でデータを分類したい時に使う
    ├─ Month :月でデータを分類したい時に使う
    ├─ Today :今日のデータを分類したい時に使う
    ├─ Week :週のデータを分類したい時に使う
    └─ YearArchiveView :年でデータを分類したい時に使う

こんなにあったんですね。

DatesというCategoryがあったのは知りませんでした。
月商の表示とか、そういったDB処理ではとても重宝すると思います。

Listカテゴリ

テーブル内容の一覧表示に特化したカテゴリです。
リスト表示に必須となるページネーションなどがプリセットされています。

ListViewClassを利用する際に課題となる事は2点。

  1. 検索どうする?
  2. Template側にリスト以外の値を渡す時どうする?

詳細はこちらにまとめました。

Detailカテゴリ

抽出したリストを表示するためのカテゴリです。
pkの処理などはプリセットされています。

注意点はDetailViewとUpdateViewは異なるという点です。
実装の際はDetailViewからUpdateViewに対してPOSTするように構築する事になると思います。

Editカテゴリ

Form送信に処理する工程を集めたカテゴリです。
Create/Update/DeleteというDBに対する基本パーツ以外にDB処理無関係なFormというViewClassを持ちます。

Baseカテゴリ

DBに対して働きかけをしないパーツを集めたカテゴリです。
静的ページを作成するときに使うTemplateViewが基礎になると思います。

RedirectViewに関してはこの記事のまとめをする段階まで存在を知りませんでした。
ListViewと合わせて使うと便利そうですけど、単体でしか使えないとなるとパッと用途を思いつきません。

Datesカテゴリ

このカテゴリも記事のまとめをしていく段階で知りました。
用途を見ていくと、基本的にはListの抽出といったイメージを持ちます。
どうやら日付などを引数としてページ遷移(抽出)が出来るようです。
月間の売上や集客の値を出すとかそんなときに使えそうです。

参考サイト

とても勉強になりました。ありがとうございます。

その1 / その2 / その3 / その4 / その5

まとめ

汎用ビュー。要は使い方次第ってことですね。

今は関数Viewばかりで構築しているのですが、Datesなんかはしっかり理解しておいた方がよさそうです。