DjangoのFormとテンプレート描画
web開発案件では、アプリが出力する画面のイメージが顧客からhtmlで提供されることがある。
一方、djangoのFormライブラリはform部品のhtmlを出力することができるが、顧客提供のhtmlと一致しないケースはよくあると思う。
こんなふうにかければ楽なんだけど、、
<form method="POST"> {% csrf_token %} {{form}} </form>
顧客に対してhtmlの変更を調整できればよいが、それが不可能な場合もある。
その場合、fieldごとに出力させたり
<form method="POST"> {% csrf_token %} <div class="input-group"> <label>form.item.label</label> {{ from.item.errors }} {{ form.item }} </div> ..... </form>
fieldがMultiple〜だったら、選択肢ごとに出力させたり
<form method="POST"> {% csrf_token %} {{ form.item.0 }} {{ form.item.1 }} {{ form.item.2 }} </form>
いろいろテンプレートで工夫することになる。
どうやっても、顧客指定のhtmlと一致させることができない場合、rendererをカスタマイズすることで対応できる。
例えばこんな感じ
テンプレートでがんばるよりもrendererを書いた方が楽ということもありそう