【django】formのinputタグに初期値を設定する

djangoのformのinputタグに初期値を予め設定しておく方法を紹介します。

想定されるケースとしては例えば、プロフィールのユーザー名やメールアドレスと予め代入しておくことで自分の設定値がなんなのかを把握できるメリットがあります。(というか昨今のトレンド)

完成イメージ

まずは完成後のイメージを画像で確認ください。

こんな感じでinputタグ内部にviewsのサーバー側で値を取得してきたものをhtml側で表示させます。

想定されるケース

冒頭での説明の繰り返しになりますが、例えばユーザ名やメールアドレスを予めform欄に入れておけば非常に親切です。twitterなんかもプロフィール編集をする時に、既に名前にも自己紹介文にも過去に自身が入力した値が入っていますよね?

環境

環境は以下になります。ちなみにヒロヤンの場合はpipenvでの環境開発を行っています。

環境

・OS Mac

・python 3.8

・djano 2.2

HTMLで表示させるには

placeholderというプロパティをinputタグに与えることで、基本的には設定ができます。

こうすることで実際の画面はこちらになります。

しかしこの場合だと、常にplaceholderのプロパティ値にhtml側で入力する必要があります。

実際のコード

まずはplaceholderという基本設置を理解できましたが、ここからが本番です。

以下で説明する方法でinputタグ内部にユーザー情報を表示させることができるコードになります。

HTMLのコード

こちらになります。

sample.com

特別難しいことはしていません。

formsのコード

こちらになります。

forms.py

viewsのコード

今回の肝になります。

views.py

  1. 1行目はformsファイルからEditProfileFormクラスを取得します
  2. 2行目はdjango.contrib.auth.modelsモジュールからUserクラスを取得します
  3. 5行目は2行目のUserクラスから現在使用中のユーザー情報を取得しています。requestがブラウザを使用中のユーザー情報が詰まっていてuserでユーザー情報を取得しidでユーザーのid情報を内部的に取得しています。
  4. 7行目に変数initial_dataを用意します
  5. 8,9行目で3.で取得したユーザー情報のうち、ユーザー名とメールアドレスを取得します。
  6. 13行目が今回の肝になります。5.で取得した情報をinitial(=初期値)とし、それをEditProfileFormに与えます。よってこれでセット完了されます。
これでrunserverすると上手く表示されます。

スクールを利用して本格的に学ぶ

いかがでしたでしょうか?

10人中9人が挫折すると言われるプログラミングを、ヒロヤンも実はプログラミングスクールで学習をしてきたからで、結果、今はPythonエンジニアとして働いています。

挫折率が高いプログラミングこそお金を払ってメンターを付けて、道を見失わないように環境を構築する必要があるのではないでしょうか。

これはダイエットで自分一人では痩せられないけど、トレーナーを付けて否が応でもせざるを得ない環境を作ると一緒ですね。

ヒロヤンもプログラミング勉強開始直後はあれこれ悩みましたが、悩むよりも手っ取り早くスクールに登録した方が最短ルートで勉強できるのではないかと考え、結果挫折せずに今に至っています。

今なら無料でキャリアカウンセリングを行っているCodeCamp(コードキャンプ)のようなプログラミングスクールもありますのでこれを機会に是非カウンセリングだけでも受けてみてはいかがでしょうか?

CodeCampで無料のカウンセリング

上記リンク先から無料相談ができます。

またこちら(↓)ではPython専用のプログラミングスクールをまとめ紹介しています。

コメントを残す

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