diadia

興味があることをやってみる。自分のメモを残しておきます。

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