LoginSignup
1
0

DjangoのCreateViewの実装の仕方を理解する

Posted at

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。

前回DjangoのFormViewとmodel、HTMLのform要素について理解を深めていきました。
今回はその学びの中で出てきた『FormViewではなくてCreateViewでも同様に実装できる』ということを確かめるためにコーディングをしてみました。

github

以下にコード一式を格納しております。

環境構築

環境イメージ

今回は以下の環境で構築しております。createTestPJという名前のプロジェクトとMyCreateという名前のアプリを作成しています。
構成要素は以前のFormViewを継承させた環境と殆ど同じです。違いとしては、forms.pyを用意していないことです。
django-ページ10.drawio (1).png

個人的に重要そうだと思う部分のメモ

MyCreate/views.py

MyCreate/views.py
from django.views.generic.edit import CreateView
from django.urls import reverse_lazy
from .models import MyCreateTable
 
class MyCreateView(CreateView):
    template_name = "MyCreate.html"
    model = MyCreateTable
    fields = ('username', 'password', 'email', 'memo')
    success_url = reverse_lazy('MyCreate:MyCreatePage')
  • FormViewを継承する時はviewsでmodelを定義することはなかったですが、CreateViewを継承する時はここで定義するようです。また、fieldsもここで定義するようです。

実行結果

入力フォームは以下となっております。
上からユーザ名、パスワード、メールアドレス、メモですね。
Try MyCreateボタンを押下してみます。
image01.png
success_url = reverse_lazy('MyCreate:MyCreatePage')との記載から元の場所に戻されます。
image02.png
admin管理画面を確認してみます。正常に作れているようですね。formsを別途用意しなくていいことから、CreateViewを継承したほうが簡単に実装できそうだなと思いました。
image03.png
image04.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0