formについてメモ
formの整理
- html上でformタグで書く方法
- forms.Formを使う方法
html上でformタグで書く方法
概要
html上でformタグでフォームを作成する。このときnameを忘れない。views.pyにて、入力されたデータはrequest.postに格納される。request.postは辞書型に似たものなので["name"]というキーを使うと取得できる(request.post["name"])。で、取得したデータを自作でバリデーションする。
forms.Formを使う方法
概要
例えばforms.pyでforms.Formを継承したクラスを作成する。そしてクラスインスタンスをviews.pyで作成し、当該インスタンスをrender()関数に渡したり、HttpResponse()関数に渡す。で、アクセスするとフォーム欄が表示されたことを確認できる。
forms.Formで継承したformクラスの変数は、html上はnameとして扱われる。htmlで入力された情報は、この変数を介してviews.py内の論理に組み込まれる。
CreateViewを使う方法
概要
CreateViewうぃ継承したクラスのプロパティは2つ定めれば使うことができる。
テンプレートには{{ forms }}を使うことが指定されている。またリクエストPOSTのためのbuttonタグは自分でテンプレートに記述する必要がある。
{{ forms }} のデザインを変更することはできるのか?ココが今の課題
どうやらサードパーティのライブラリを使うとできるようだ。どうしてもと言うなら CreateViewを使わずにViewを使ってforms.Formを使う方法も考えられる。
https://docs.djangoproject.com/ja/2.2/ref/forms/api/#checking-which-form-data-has-changed