Django – フォームデータ

概要

テンプレートのフォームで入力・送信されたデータをビューで受け取って処理する方法の基本。

ビュー関数/メソッドの引数(たとえばrequest)のPOST配列でフォームのINPUT要素のname属性値を指定して値を取得する。

request.POST['name属性値']

実装例

2つのページへのルーティング

urls.pyinputページとresultページへのルーティングを設定。inputページにフォームを置き、そこから送信されたデータをresultページで表示することとする。

DTLのurlタグを使うため、各ルートにname引数でルート名を付けている。

inputページのためのビュー

ルート名formtest:inputでルーティングされるview関数。単にinput.htmlテンプレートをレンダリングしている。

input.htmlテンプレート

input.htmlテンプレート。フォームには、textタイプのINPUT要素と、3つの選択肢を持つradioタイプのINPUT要素群が置かれている。

  • textタイプのINPUT要素のname属性はinput_test
  • radioタイプの3つのINPUT要素のname属性はradio_choiceで値はpinebambooplum

送信ボタンが押されると、methodで指定したURLに飛ぶが、ここではurls.pyで定義したformtest:resultに飛ぶようにDTLのurlタグを使っている。

resultビュー

フォームからの送信に対してviews.pyresult関数が呼ばれる。result.htmlテンプレートにcontext辞書を介して2つの変数input_textradio_choiceを渡している。

  • input_text変数には、name='input_text'で指定されたテキストの内容がrequest.POST['input_text']で取得されて代入される
  • radio_choice変数には、name='radio_choice'で指定されたラジオボタンのうち選択されたもののvalue値がrequest.POST[‘radio_choice’]で取得され、これに対応する文字列が代入される

result.htmlテンプレート

resultテンプレートでは、ビューのcontextで設定された変数の内容を表示する。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です