Значения полей WTForms по умолчанию внезапно не работают

У меня есть следующий код:

class ReconForm(Form):
    compressedFilePath = StringField('Compressed File Path', [validators.Required()] )

и я создаю его следующим образом:

form = ReconForm()
form.compressedFilePath.default = 'hey'

Это ничего не делает. Раньше он устанавливал значение по умолчанию на «привет», но потом он остановился, и я понятия не имею, почему.

Если я печатаю form.compressedFilePath.default, он печатает правильное значение. Если я установлю значение по умолчанию в конструкторе поля, шаблон отобразит правильное значение. В противном случае это просто ничего не делает, и это сводит меня с ума.

Что я делаю неправильно?


person user1170304    schedule 23.01.2014    source источник
comment
Вы недавно установили более новую версию WTForms?   -  person dirn    schedule 23.01.2014
comment
Я так не думаю. Я изменил его на .data вместо .default на некоторое время, а затем изменил его обратно, и он снова начал работать. Может ли это быть связано с кэшированием или чем-то еще?   -  person user1170304    schedule 24.01.2014
comment
Я никогда не устанавливал значение по умолчанию таким образом, поэтому я не знал, что это когда-либо работало. Однако код обычно не перестает работать сам по себе. Вот почему я сначала подумал, что, возможно, вы перешли на более новую версию WTForms.   -  person dirn    schedule 24.01.2014


Ответы (2)


Вот два известных мне способа установить значение по умолчанию для поля с помощью WTForms.

  1. Чтобы установить значение по умолчанию для всех экземпляров формы, объявите значение в определении поля.

    class ReconForm(Form):
        compressedFilePath = StringField(
            'Compressed File Path', [validators.Required()], default='hi')
    
    form = ReconForm()
    

    Проверять:

    assert 'value="hi"' in str(form.compressedFilePath)
    
  2. Чтобы установить значение по умолчанию только для определенного экземпляра формы, укажите значение при создании экземпляра.

    class ReconForm(Form):
        compressedFilePath = StringField(
            'Compressed File Path', [validators.Required()])
    
    form = ReconForm(compressedFilePath='hi')
    

    Проверять:

    assert 'value="hi"' in str(form.compressedFilePath)
    
person dirn    schedule 24.01.2014

Действительно старый вопрос, но есть более простой способ - просто вызовите process() в своей форме после установки значения по умолчанию.

person Will Jenkins    schedule 14.07.2020