2016-12-07 59 views
1

我找不到为什么此代码与StringField一起使用,但不是HiddenField。添加变量date2仅用于调试问题。HiddenField不返回值

其实,我可以离开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没有。我试图交换他们以确保StringFieldHiddenField确实是唯一的区别。

回答

1

只是为了记录在案,我发现的bug:

我用{{ subform.hidden_tag() }}显示CSRF令牌,但它确实比这更多的(我不知道它):

如果您的表单有多个隐藏字段,则可以使用hidden_​​tag()将它们渲染到一个 区块中。

所以我隐藏的领域呈现两次,第一个没有价值。