こんにちは。
LiSMOtechの久津間です。
前回の記事ではDjangoのビュー・テンプレートを使った画面へのレンダリング方法について紹介しました。
FWの使い方、MTVの処理の流れを追うことができれば比較的簡単だったのではないかと思います。
その他の機能実装において分からないことが出たら、基本はGoogleでひたすら調べたり、公式ドキュメントを眺めて実装してみる流れとなります。
また、今更ではありますがDjangoに関する記事ではHTMLやCSS、JavaScriptについての解説は一切行いません。
画面の見てくれについては気にせず進めていくつもりなので、もしHTMLやCSS、JavaSciprtがさっぱり分からない方は並行して勉強するなり、先に勉強しておくことを推奨します。
それでは、本件の内容に入っていきます。
今回はDjangoのクラスベース汎用ビュー(Generic View)について紹介していきます。
Djangoのクラスベース汎用ビューを使うことで開発スピードを爆速にすることが可能です。
クラスベース汎用ビューとは、ビューを実装するもう一つの手段となります。
django.view.genericパッケージで提供されています。
関数の代わりにPythonのオブジェクトとしてビューを定義していきます。
ここまで紹介してきた記事ではview.pyにはPythonの関数ベースのコードを記載してページを作成していたと思いますが、これでは、今後ビューファイルが増えるごとに記述しないといけないコードも増えていきます。
公式では関数ベースのビューと比較して、以下のような違いと利点があると記載があります。
- Organization of code related to specific HTTP methods (
GET
,POST
, etc.) can be addressed by separate methods instead of conditional branching.- Object oriented techniques such as mixins (multiple inheritance) can be used to factor code into reusable components.
(引用:https://docs.djangoproject.com/en/3.2/topics/class-based-views/intro/)
1行目ではHTTPメソッドのGETやPOSTを条件分岐を使って分けるのでなく、それぞれ独立したメソッドを割り当てることができると記載されています。
2行目ではミックスイン、またはミキシンなどのオブジェクト指向のテクニックを使ってコードを再利用可能なコンポーネントに分解できると記載されています。
もっと簡単に噛み砕くと、HTTPメソッドを指定する必要がないし、ミックスインの仕組みを使えばクラスビューに機能を拡張できるって感じですかね。
ここではざっくりとアウトラインを抑え、実際によく使用するクラス汎用ビューの説明に進みます。
ListView |
モデル(データベース)から一覧のデータを取得できます。 一覧ページなどを作る際に利用します。 |
DetailView |
モデル(データベース)から単一のデータを取得できます。 詳細ページなどを作る際に利用します。 |
CreateView |
モデル(データベース)に新しいデータを作成します。 新たな情報、レコードを追加する際に利用します。 |
UpdateView |
モデル(データベース)に登録されているデータを更新します。 既存データの情報を最新にする際に利用します。 |
DeleteView |
モデル(データベース)に登録されているデータを削除します。 既存データの情報を削除する際に利用します。 |
TemplateView |
ページ生成に必要な機能が含まれている便利なクラスビューです。 ブラウザからGETなどで使われるページは主にこちらを利用します。 |
上記にも記載しましたが、クラスベース汎用ビューのListViewは一覧ページなどを作る際に利用します。
先ずはview.pyから編集していきます。
from django.views.generic import ListView
class SnippetListView(Listview):
template_name = 'snippet_list.html'
model = Snippet
続いて、テンプレート側を編集をします。
最後にurl.pyを編集します。
from django.urls import path
from snippets import views
urlpatterns = [
path("list/",views.SnippetListView.as_view(), name="list"),
]
今回の記事では汎用クラスベースビューについて紹介させていただきました。
ここで記載した汎用クラスベースビュー以外もございます。
公式ドキュメントを確認しながら一度試してみることをお勧めします。
また、非常にシンプルな形での実装をご紹介させていただきましたが、もう少し細かな粒度で紹介していければと考えています。
次回もお楽しみに!!!
NEXTGATE LiSMOtechでは中小企業を中心にブランディング・WEBマーケティングを活用したWEB戦略を提供しています。
企業課題・問題に関するご相談、WEBサイト制作やグラフィックデザイン制作のクリエイティブに関するご相談やご質問、お見積りなどお気軽にお問い合わせください。
平日10:00〜19:00
© NEXTGATE LiSMOtech All rights reserved