覆盖WTForms中的html格式化表单字段

时间:2012-07-15 01:28:46

标签: wtforms

使用wtforms我正在尝试格式化以下表单。所以我有工作但我不需要'FormField'包含的html表 - 所以如何绕过/覆盖它?

class WeekdayHoursForm(BaseForm):

   hours = [(str(x+1), str(x+1)) for x in range(12)]
   mins=[('00',':00'),('15',':15'),('30',':30'),('45',':45')]

   fromHour = SelectField('',choices=hours)
   fromMin  = SelectField('',choices=mins)
   toHour   = SelectField('',choices=hours)
   toMin    = SelectField('',choices=mins)
   closed   = BooleanField('Closed','0')

class AddListingForm(BaseForm):
   monday    = FormField(WeekdayHoursForm)
   tuesday   = FormField(WeekdayHoursForm)

   etc...

我的观点

<div class="wrapper-block weekday" id="mon">
   {{ form.monday.label }} {{ form.monday() }}  
</div>

<div class="wrapper-block weekday" id="tues">
   {{ form.tuesday.label }} {{ form.tuesday() }}
</div>

我省略了生成的HTML,但我可以在需要时将其粘贴 - 我知道wtforms FormField使用'TableWidget',但我不知道将其设置为'with_table_tag = False'的位置?

1 个答案:

答案 0 :(得分:1)

每个wtforms.fields.Field子类都使用一个名为widget的关键字参数,该参数可用于覆盖字段的呈现。您可以阅读有关可用的WTForms小部件in their docs的更多信息。

如果您只想使用列表而不是表格,可以使用内置的ListWidget:

# ... snip ...
class AddListingForm(BaseForm):
   monday    = FormField(WeekdayHoursForm, widget=ListWidget)
   tuesday   = FormField(WeekdayHoursForm, widget=ListWidget)