HiddenField没有返回值

时间:2016-12-07 08:49:16

标签: flask-wtforms

我无法找出此代码与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不会。我尝试交换它们以确保StringFieldHiddenField确实是唯一的区别。

1 个答案:

答案 0 :(得分:2)

为了记录,我找到了错误:

我使用{{ subform.hidden_tag() }}来显示CSRF令牌,但它做的不止于此(我不知道):

  

如果您的表单有多个隐藏字段,则可以将其渲染为一个   阻止使用hidden_​​tag()。

所以我的隐藏场被渲染了两次,第一次没有价值。