0

我有以下代码:

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

我像这样实例化它:

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

它什么也不做。它曾经将默认值设置为嘿,但后来它停止了,我不知道为什么。

如果我打印 form.compressedFilePath.default 那么它会打印正确的值。如果我在字段构造函数中设置默认值,则模板会呈现正确的值。否则它什么也不做,它让我发疯。

我究竟做错了什么?

4

2 回答 2

6

这是我知道的使用 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)
    
于 2014-01-24T17:04:17.973 回答
1

确实是老问题,但有一种更简单的方法 - 只需process()在设置默认值后调用您的表单。

于 2020-07-14T11:15:36.907 回答