「Djangoパーフェクトマスター」Djangoにおけるフォーム【Udemyで学習】

www.youtube.com

このレクチャーでは「Djangoにおけるフォーム」を説明します。

Webアプリケーションのフォーム開発は、HTMLのform要素だけで実現されるものではありません。フォームにデータを表示したり、送信されてきたデータを格納するためのクラス、ブラウザから送信されてきたときのデータの処理など、これら全て具備することが「フォーム開発」なのです。

Djangoのフォーム開発の中心は、Formクラスです。Djangoのモデルが、データベーステーブルの論理構造や、振る舞いのカスマイズなどを定義するのと同じように、Formクラスも、フォームの構造や振る舞いのカスタマイズを定義します。

Modelクラスのフィールドが、データベーステーブルのカラムと対応するのと同じように、Formクラスのフィールドは、HTMLのinput要素に対応します。ModelクラスとFormクラスは別々に定義するのですが、実際の開発では、モデルとフォームの構成要素がほぼ同じ、というパターンも多いと思います。実は、Formクラスの構成要素は書かずに、Modelで定義したフィールドを利用して、Formクラスのフィールドにしてしまう「ModelForm」というクラスもあるのですが、別の場で説明したいと思います。

Formクラスのフィールドは、CharFieldやEmailFieldのようなクラスのインスタンスです。ブラウザからフォームのデータが送信されたとき、検証をして、データを保持します。フィールドは、HTMLの入力部品と紐付いています。入力部品は「ウィジェット」と呼ばれています。独自のウィジェットを作ることも、フィールドとウィジェットとの紐付けを変更することも可能です。

Djangoでは、モデルのインスタンスをHTMLで表示するとき、通常は次のような手順をとります。手順1では、ビュー関数の中で、モデルからインスタンスを取得します。クエリを使用して、データベースから取得することが多いと思います。手順2で、取得したインスタンスを、コンテキスト変数に乗せて、テンプレートへ引き渡します。手順3は、コンテキストとして引き継いだモデルのインスタンスを、テンプレートの変数タグを使って表示します。

フォームで入力フィールドを表示するときに、あらかじめデータを入れた状態で表示するのか、空の状態で表示するのか、二種類の状態があると思います。あらかじめデータを入れた状態にするケースとしては、次の3つのケースが考えられるでしょう。一つ目は、データベースに保存されたデータを、入力フィールドに表示するケース、二つ目は、データベース以外から取得したデータを、入力フィールドに表示するケース、三つ目は、前回のHTMLフォームの送信で、受信したデータを表示するケースです。三つ目のケースに関しては、サーバ側でのデータ検証で、エラーになった場合などが考えられます。検証でエラーが発生した場合、ブラウザに「正しく入力してください」とエラーメッセージを表示しているにも関わらず、全てのフィールドが空の状態だったら、利用者は怒ってしまうでしょう。

以上で「Djangoにおけるフォーム」の説明を終わります。

★★★ 続きはUdemyで ★★★
https://www.udemy.com/course/django_master/?referralCode=3B5D0AF66B09A7B8DD25
★★★ コース内でお逢いできることを楽しみにしています。 ★★★