2016-12-07 78 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()將它們渲染到一個 區塊中。

所以我隱藏的領域呈現兩次,第一個沒有價值。