Quantcast
Channel: 初心者タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 21503

Djangoのクラスベースビュー

$
0
0

はじめに

ここでは、djangoのクラスベースビュー(汎用ビュー)の基本について解説していきます。
アプリケーションディレクトリ下にあるviews.pyに書いていきます。
モデルとしてmodels.pySampleModelを、フォームとしてforms.pySampleFormを利用するものとします。

TemplateView

最もシンプルな形のクラスビューです。
いろいろなページの作成に使えます。

views.py
fromdjango.viewsimportgenericclassSampleTemplate(generic.TemplateView):template_name='app/app_template.html'

なお、テンプレートとするHTMLファイルを指定するtemplate_nameは、アプリ名/アプリ名_view名.htmlとすると、クラス定義時に明示しなくてもデフォルトで利用されるようになります。以下で説明する他のビューでも同様です。

ListView

ブログの記事一覧ページなど、複数のレコードを一覧表示するページに使えます。

views.py
fromdjango.viewsimportgenericfrom.modelimportSampleModelclassSampleList(generic.ListView):model=SampleModeltemplate_name='app/app_list.html'paginate_by=10# ページネーションを入れる場合

modelは、ページに表示するレコードを格納しているモデルを指定します。

CreateView

ブログの新規記事の作成など、新しいレコードを作成するページに使えます。

views.py
fromdjango.urlsimportreverse_lazyfromdjango.viewsimportgenericfrom.modelimportSampleModelfrom.formsimportSampleFormclassSampleCreate(generic.CreateView):model=SampleModelform_class=SampleFormtemplate_name='app/app_create.html'success_url=reverse_lazy('app:app_list')

form_classで指定されたフォームに基づいて、フォーム画面が作成されます。
また、success_urlは、記事作成に成功した後に遷移するページを指定します。詳しくはurls.pyの記事で解説します。

DetailView

ブログの記事の個別ページなど、レコードの詳細を表示するページに使えます。

views.py
fromdjango.viewsimportgenericfrom.modelimportSampleModelfrom.formsimportSampleFormclassSampleDetail(generic.Detail):model=SampleModeltemplate_name='app/app_detail.html'

UpdateView

ブログの記事の編集画面など、一度作成したレコード内容を更新するページに使えます。

views.py
fromdjango.urlsimportreverse_lazyfromdjango.viewsimportgenericfrom.modelimportSampleModelfrom.formsimportSampleFormclassSampleUpdate(generic.UpdateView):model=SampleModelform_class=SampleFormtemplate_name='app/app_update.html'success_url=reverse_lazy('app:app_list')

DeleteView

ブログの記事の削除画面など、作成したレコードを削除するページに使えます。

views.py
fromdjango.urlsimportreverse_lazyfromdjango.viewsimportgenericfrom.modelimportSampleModelfrom.formsimportSampleFormclassSampleDelete(generic.DeleteView):model=SampleModeltemplate_name='app/app_delete.html'success_url=reverse_lazy('app:app_list')

まとめ

ここでは、djangoのクラスベースビューの基本について解説しました。
次回は、関数ベースビューについて解説する予定です。


Viewing all articles
Browse latest Browse all 21503

Latest Images

Trending Articles