WTForms字段默认突然不工作

问题描述:

我有以下代码:WTForms字段默认突然不工作

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

和我实例是这样的:

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

它什么都不做。它用来设置默认值为嘿,但然后停止,我不知道为什么。

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

我在做什么错?

+0

你最近有没有安装WTForms的新版本? – dirn

+0

我不这么认为。我将其更改为.data而不是.default一段时间,然后将其更改回来并重新开始工作。它可能是与缓存或什么? – user1170304

+0

我从来没有设置默认值,所以我不知道它曾经工作过。但是,代码通常不会自行停止工作。这就是为什么我最初的想法是,也许你升级到更新版本的WTForms。 – dirn

以下是我知道的使用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)