4

forms.errors 字典似乎是按字段名称排序的,而不是按它们在表单本身中声明的顺序。

例如

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 回答