2014-01-23 65 views
0

我有以下代碼: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

回答

2

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