diadia

興味があることをやってみる

CreateView 使い方メモ

クラス別汎用ビュー大枠 - diadia

上記で分類したようにCreateViewは、ListViewやDetailViewと違いデータベースに情報を入力するタイプのものだ。

そういうわけで気になったところをメモしておく。

まずListViewとDetailviewとCreateViewの相違点はどこにあるか?

両者の関係はL、DをCが含む形になっている。だからL、Dと同じように書いてみればいい。その後に追加して必要な項目を気にすれば良い。

一応下に参考になるものをメモしておく。

 

 

urls.py

from django.views.generic import CreateView

path('create',HogeCreateView.as_view(),name="create")

 

views.py

from django.urls import reverse_lazy

class HogeCreateView(CreateView):

    model = Hoge

    fields = ["contents"]

    succes_url = reverse_lazy("index")

 

hoge_forms.html

基本的にはhtmlのformと同じ書き方をして、そこにdjango特有の書き方をすればオッケイ。

基本は

<form method="post">内容<button>送信</button></form>

Django仕様にすると

<form method="post">{% csrf_token %} 内容{{ form }}<button>送信</button></form>

 

 

 

 

 

 

注意書き 

createviewを使うときはviews.pyにてfieldsが必要になる。なぜならcreateviewのページにふさわしくない情報を入力されたら困るし、攻撃の原因になりうるかららしい。

 

参考情報

この内容はCreateViewについてだが、UpdateViewについても同じ使い方といって問題ない。