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を書いた方が楽ということもありそう