WTForms字段默认突然不起作用

时间:2014-01-23 16:35:00

标签: flask wtforms flask-wtforms

我有以下代码:

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

我将它实例化为:

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

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

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

我做错了什么?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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