4

forms.errors dict は、フォーム自体で宣言されている順序ではなく、フィールド名でソートされているようです。

例えば

class ProductForm(Form): 
    code = TextField('Code', validators=[Required()]) 
    description = TextField('Description', validators=[Required(), Length(max=100)]) 
    amount = DecimalField('Amount', validators=[Required(), NumberRange(min=0.00, max=1000000.00)]) 
    vat_percentage = DecimalField('VAT %', validators=[Required(), NumberRange(min=0.00, max=100.00)]) 
    inactive_date = DateField('Inactive date', validators=[Optional()]) 

次のような form.errors が生成されます。

{'amount': ['Amount is required'], 'code': ['Code is invalid.'], 
'description': ['Description is required'], 'vat_percentage': ['VAT % is required']} 

私がやりたいのは、フォームで注文されたとおりにエラーを印刷することです。

これは可能ですか?

4

1 に答える 1

4

辞書は本質的に順序付けられていません(Pythonの場合)。ただし、WTFormsには、フィールドとフォームの各フィールドのエラーが含まれており、フィールドを宣言された順序で列挙できることが保証されています。form.errorsしたがって、列挙するのではなく、ループしてからformそれぞれfield.errorsをループして、順番に取得することができます。

for field in form:
    for error in field.errors:
        # Display error
于 2013-03-16T13:18:03.143 に答える