Flask WTForms字段默认值为';行不通

Flask WTForms字段默认值为';行不通,flask,wtforms,flask-wtforms,Flask,Wtforms,Flask Wtforms,我有以下代码: class ReconForm(Form): compressedFilePath = StringField('Compressed File Path', [validators.Required()] ) 我将其实例化如下: form = ReconForm() form.compressedFilePath.default = 'hey' 它什么也不做。它曾经将默认值设置为hey,但后来它停止了,我不知道为什么 如果我打印form.compressedFile

我有以下代码:

class ReconForm(Form):
    compressedFilePath = StringField('Compressed File Path', [validators.Required()] )
我将其实例化如下:

form = ReconForm()
form.compressedFilePath.default = 'hey'
它什么也不做。它曾经将默认值设置为hey,但后来它停止了,我不知道为什么

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


我做错了什么?

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

  • 要将该值设置为窗体所有实例的默认值,请在字段定义中声明该值

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

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

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

    assert 'value="hi"' in str(form.compressedFilePath)
    
    assert 'value="hi"' in str(form.compressedFilePath)
    

  • 这是一个很老的问题,但有一个更简单的方法-在设置默认值后,只需在表单上调用
    process()

    您最近安装了更新版本的WTForms吗?我不这么认为。我将它改为.data而不是.default一段时间,然后又改回来,它又开始工作了。这可能与缓存或其他什么有关吗?我从来没有这样设置过默认值,所以我不知道它曾经工作过。不过,代码本身通常不会停止工作。这就是为什么我最初的想法是,也许您升级到了WTForms的新版本。