2016-12-07 8 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

念のために、私はバグを発見した:

私はCSRFトークンを表示する{{ subform.hidden_tag() }}を使用していたが、それはこれ以上にない(と私はそれを知らなかった):

フォームに複数の非表示フィールドがある場合は、hidden_​​tag()を使用してブロックを1つの ブロックにレンダリングできます。

私の隠しフィールドは2回レンダリングされ、最初のフィールドは値がありませんでした。

関連する問題