WTForms でラジオボタン

WTForms でラジオボタンを使うメモ。
# オフィシャルサイトに書いてるけど…。


フォームクラス

# -*- coding: utf-8 -*-
from flaskext.wtf import Form, RadioField, validators
from flaskext.babel import gettext as _
class(Form):
    active_flag = RadioField(
        _('Active flag'), 
        choices=[('open', _('Open')), ('close', _('Close'))],
        validators=[validators.Optional()]
    ) 

テンプレート(Jinja2)

<div class="clearfix">
   <label for="">{{ form.active_flag.label.text }}</label>
   <div class="input">
     <ul class="inputs-list">
        {% for sub in form.active_flag %}
        <li>
           <label>
           {{ sub }}
           <span>{{ sub.label.text }}</span>
          </label>
       </li>
       {% endfor %}
    </ul>
  </div>
</div>

できあがった HTML

<div class="clearfix">
  <label for="">Active flag</label>
    <div class="input">
      <ul class="inputs-list">    
        <li>
          <label>
            <input type="radio" value="open" name="active_flag" id="active_flag-0" checked="checked">
            <span>Public</span>
         </label>
       </li>
       <li>
         <label>
           <input type="radio" value="close" name="active_flag" id="active_flag-1">
           <span>Close</span>
         </label>
       </li>
     </ul>
  </div>
</div> 

デザイン会社がプレーンな HTML を納品する形の保守をやってた経験から、パーツ毎に記述するほうが好き。