「Djangoパーフェクトマスター」フォームを作る(ビューを作る)【Udemyで学習】

www.youtube.com

このレクチャーでは「フォームを作る(ビューを作る)」を説明します。

ご覧いただいているPythonスクリプトが、名前だけを入力するフォームのビュー関数です。views.pyの中にget_nameという名前でビュー関数が定義されています。

このビュー関数の振る舞いについて説明します。はじめは、フォームを初期表示するためのGETメソッドによるアクセスがあるでしょう。その際は、request.methodの判定がelse、具体的には下から3行目に到達します。ここでは、前のレクチャーで説明したNameFormクラスを、引数無しでインスタンス化して、form変数に設定しています。その後、最後の行のrenderショートカット変数によって、HTMLが自動生成されます。レンダリングの際のテンプレートはname.html、コンテキストにはformキーワードでform変数を指定しています。繰り返しになりますが、form変数はNameFormクラスを引数無しでインスタンス化しています。そのことによって、レンダリングされたHTMLでの入力フォーム部品は、全て値なしで表示されます。

ブラウザで名前を入力し、OKボタンによってサブミットされた場合、POSTメソッドによって、このビュー関数がコールされます。その場合は、request.methodの判定がPOSTのルートに入ります。はじめに、NameFormクラスをインスタンス化していますが、GETの時と違い、引数にrequest.POSTを設定しています。この引数によってNameFormインスタンスに、POSTデータが格納されます。Djangoでは、このようにPOSTデータが格納されたFormインスタンスを「くくりつけられたフォーム」「フォームにデータをくくりつける」と呼びます。

次に、is_validメソッドにより検証(バリデーション)が実行されます。検証OKの場合は、Trueが返ってくるので、このスクリプトの場合は、次に進むためのHTTPリダイレクトを、ブラウザに送信しています。実践では、リダレクトする前に入力されたデータを、データベースに格納することが多いと思います。その場合は、NamaFormインスタンスのcleaned_data属性にアクセスしてモデルに保存する、という流れになります。

このように、フォームのためのビュー関数では、GETアクセスによるフォームを表示するためのロジックと、POSTによってフォームから送信されてきたときのロジックを、一つのビュー関数で作り込むことが多いです。

以上で「フォームを作る(ビューを作る)」の説明を終わります。

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