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 を納品する形の保守をやってた経験から、パーツ毎に記述するほうが好き。