Django CreateViewで新規作成画面を作成

2019年11月18日

クラスベースビューであるCreateView(編集するためのビュー)を利用して、新規作成画面を作成してみます。

 

CreateViewはオブジェクトの新規作成フォーム画面の描画およびバリデーションエラー表示の機能を持つクラスです。オブジェクトとはモデルのデータであり、本記事では下記のMemberモデルを利用します。アプリケーション名はuserで作成しています。

 

user/models.py

 

なお上述したモデルのバリデーションは、下記の関連ページで説明している設定です。また「ListView」および「DetailView」による詳細画面作成の説明はしていませんので合わせてご覧下さい。

 

関連ページ

バリデーション設定の基本

 

DetailViewで詳細画面を作成

 

 

以下コードと説明です。

 

user/views.py

16行目

template_nameに利用するテンプレートを指定しています。デフォルトでは「アプリ名/モデル名_form.html」が設定されているので、下記で記述している階層において「member_form.html」テンプレートを作成していれば、特に記述する必要はありません。

 

18行目

テンプレート側で表示させるフィールドを指定しています。

 

20/21行目

登録が成功した際の画面遷移先を指定しています。「detail」はurls.pyのpathの第3引数のnameで指定した名前で、上記ではDetailViewによる詳細画面へと遷移させています(例:http://127.0.0.1:8000/user/5/)。CreateViewでは「self.object」によってオブジェクト(Memberオブジェクト)にアクセスすることができます。

 

成功した際の遷移先として単純にURLを指定する場合は、get_success_url()を使わずに下記のように記述することができます。

 

またget_form()によって、ラベル(label)等の表示や入力必須等の設定を変更することもできます。

 

 

user/urls.py

 

 

user/templates/user/member_form.html

 

 

関連ページ

UpdateViewで編集(更新)画面を作成

 

 

参照ページ


 

django ドキュメント

Generic editing ビュー CreateView

 

 

 

LINEで送る
Pocket

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