Django のクラスベースビューは非常に便利ですが、使いこなせているでしょうか?
クラスベースビューを応用して使うには全体の構造を把握する必要があると思いますが、公式ドキュメントは解説文のみのため理解しづらいです。
今回はクラスベースビューのクラス図を使って構造を把握するコツを解説します。
クラスベースビューのクラス図
詳細表示クラス、編集系クラス
上の画像はクラス名とモジュール名だけのシンプルなクラス図です。
RedirectViewはViewクラスの継承しているだけです。
TemplateView、DetailView、CreateView、UpdateView、DeleteViewはdjango.views.generic.baseモジュールにあるViewクラス、Templateクラス、Contextクラスから派生していることがわかります。
設計思想を知りたい場合はこの3つのクラスのコードリーディングから始めると良いでしょう。
Mixinについて
クラス名にMixinがついているクラスがあります。Mixinとは機能拡張用のクラスのことで継承して使い、単体で動作することを意図しないクラスです。既存のViewクラスにオリジナルの機能を追加したい時は、○○Mixinというクラスを作成しそれらを継承すれば良さそうです。
例えばDjangoの認証系のクラスにPasswordResetDoneViewクラスがありますが、これはTemplateViewクラスとPasswordContextMixinクラスを継承しています。
リスト表示クラス
上の画像はListViewクラスの継承関係です。DetailViewクラスと似ていることがわかります。
他にはGeneric dateビューがありますが、仕組みは上記と同様です。気になる場合は自分でクラス図を書いてみましょう。
学習方法
上の画像は私の手書きのクラス図です。ソフトで書いたクラス図の方が綺麗ですが、手書きの方が頭に残りやすいと思います。
学び初めの時は手書きのクラス図使って継承関係意識しながらコードリーディングをしていました。それを続けていたらDjango の公式ドキュメントを見なくてもコードを見てカスタムできる様になり、開発効率も高くなりました。
クラスベースビューを使いこなせない場合はクラス図を活用してはどうでしょうか?
コメントを残す