波括弧のエスケープ

djangoでフォームをレンダリングするとき、{{ form }}って書ければ楽なんだけど、デザインの都合でそうはいかない場合もある。


django shellでデザインになるべく合わせた雛形を出力して、コピペして細かいところを修正するとよいかも。

>>>  form = SampleForm()
>>> for field_name, _ in form.fields.iteritems():    
    print """<div>
<label for="{{{{ form.{0}.label }}}}">{{{{ form.{0}.label_tag }}}} {{% if form.{0}.field.required %}} (必須){{% endif %}}</label>
  {{{{ form.{0}.error }}}}{{{{ form.{0} }}}}
</div>""".format(field_name)
<div>
<label for="{{ form.name.label }}">{{ form.name.label_tag }} {% if form.name.field.required %} (必須){% endif %}</label>
  {{ form.name.error }}{{ form.name }}
</div>
<div>
<label for="{{ form.age.label }}">{{ form.age.label_tag }} {% if form.age.field.required %} (必須){% endif %}</label>
  {{ form.age.error }}{{ form.age }}
</div>

カスタムのウィジェットを書いてがんばるべき?

ウィジェットでがんばりすぎると、あとでデザイナーが手を出せないのでダメっていうケースがある。

str.formatでの波括弧のエスケープについて

上記のように波括弧は波括弧でエスケープできる