質問: Djangoでwebサイトを作成しています。 ユーザー登録画面で、居住県を47都道府県の中から選択してもらいます。 現状、変数prefectureには47都道府県名が入っており、下記のテンプレート上で、forループでレンダリングして表示させるようにしています。 ``` {% for pref in prefecture %} {{pref}} {% endfor %} ``` ここまではうまくいきます。 しかし、いったん登録してもらったユーザーが情報を修正する際には、もともと登録していたデータが反映されたフォームを表示したいと考えています。 inputで入力するデータについては、もともと入力したデータをvalueで受け渡せば良い(例:)のですが、selectで入力したデータの場合、どのようにしたらよいでしょうか。 例えば、東京都居住のユーザーの場合、 東京都 と表示されればよいのですが、これをどのように実装したら良いでしょうか。 私が考えた方法は、views.pyにおいて、 当該ユーザーに応じて、例えば、既に東京都で登録済みの場合は、 北海道 ... 東京都 ... 沖縄県 という文字列を生成させ、この文字列をそのまま、htmlにレンダリングするという方法です。 これはできると思うのですが、そもそもhtmlのタグをviews.pyに生成させるということは、あまり綺麗なやり方ではないのではないかと思いました。 htmlタグについては、テンプレートに任せ、それに入れる変数だけをviews.pyで処理するというのが、本来の役割分担のように考えてきたからです。 上記のように、「○○」の中の1つを「○○」とする処理は、よくあるのではないかと思うのですが、そのような場合のベストプラクティスのようなものはないのでしょうか。 お分かりの方、ご教示頂ければ幸いです。 よろしくお願いいたします。
回答: Djangoは分かりませんが... selected の部分を変数で指定するように書き、 直前でその変数に "" or "selected" を設定する という形をとるのがひとつ。 (選択済みの都道府県が得られる前提) なるべくテンプレートにロジックを入れたくないなら prefecture に "" or "selected" も持たせて 設定していくという形でしょうか。 有無フラグでもいいですけど、それだとロジックが テンプレートにのってくるので、どういう形にするかは 設計orセンスしだいですかねえ。