0

次のコードがあります。

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

そして、私はそれを次のようにインスタンス化します:

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

それは何もしません。以前はデフォルト値を hey に設定していましたが、その後停止し、理由がわかりません。

form.compressedFilePath.default を出力すると、正しい値が出力されます。フィールドコンストラクターでデフォルトを設定すると、テンプレートは正しい値をレンダリングします。そうしないと、何も起こらず、気が狂いそうになります。

私は何を間違っていますか?

4

2 に答える 2

6

WTForms を使用してフィールドのデフォルト値を設定する方法として、私が知っている 2 つの方法を次に示します。

  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)
    
于 2014-01-24T17:04:17.973 に答える