我找不出为什么这段代码适用于StringField,但不适用于HiddenField。添加变量date2只是为了调试该问题。
(实际上,我可以把StringField留在那里,但我花了一段时间才发现问题所在,我想了解哪里出了问题,以免重蹈覆辙)
表格定义:
DAYS = 10
class _OneDayForm(Form):
alarmtime = StringField(validators=[Optional(), validate_time])
date2 = StringField() # json encoded [Y,M,D]
date = HiddenField() # json encoded [Y,M,D]
class _PerDayForm(Form):
days = FieldList(FormField(_OneDayForm), min_entries=DAYS)
submit = SubmitField()Jinja2模板:
<input name="{{ subform.date.name }}" type="hidden" value="{{ ymd }}">
<input name="{{ subform.date2.name }}" type="hidden" value="{{ ymd }}">生成的HTML:
<input name="days-0-date" type="hidden" value="[2016, 12, 7]">
<input name="days-0-date2" type="hidden" value="[2016, 12, 7]">StringField date2返回它的值,但HiddenField date不返回。我试着交换它们,以确保StringField与HiddenField之间的唯一不同之处。
发布于 2016-12-09 16:48:10
为了记录在案,我发现了窃听器:
我使用{{ subform.hidden_tag() }}来显示CSRF令牌,但它所做的比这更多(而且我不知道):
如果窗体有多个隐藏字段,则可以使用hidden_tag()在一个块中呈现它们。
所以我的隐藏字段被渲染了两次,第一个没有价值。
https://stackoverflow.com/questions/41012947
复制相似问题