WTForms 字段默认值突然不起作用

use*_*304 0 flask wtforms flask-wtforms

我有以下代码:

class ReconForm(Form):
    compressedFilePath = StringField('Compressed File Path', [validators.Required()] )
Run Code Online (Sandbox Code Playgroud)

我像这样实例化它:

form = ReconForm()
form.compressedFilePath.default = 'hey'
Run Code Online (Sandbox Code Playgroud)

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

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

我究竟做错了什么?

dir*_*irn 6

这是我知道的使用 WTForms 为字段设置默认值的两种方法。

  1. 要将值设置为表单所有实例的默认值,请在字段定义中声明该值。

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

    验证:

    assert 'value="hi"' in str(form.compressedFilePath)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 要将值设置为表单特定实例的默认值,请在实例化时指定该值。

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

    验证:

    assert 'value="hi"' in str(form.compressedFilePath)
    
    Run Code Online (Sandbox Code Playgroud)