对WTForms form.errors dict进行排序

时间:2013-03-15 07:41:14

标签: python google-app-engine python-2.7 wtforms

forms.errors dict似乎是在字段名称上排序,而不是在 命令它们在表单中声明。

E.g。

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']} 

我想要做的是按顺序打印错误 在表格中订购。

这可能吗?

1 个答案:

答案 0 :(得分:4)

字典本质上是无序的(在Python中)。但是,WTForms在字段和表单中包含每个字段的错误, 保证字段可以按声明的顺序枚举。因此,您可以循环遍历form.errors,然后循环遍历每个form,以便按顺序排列field.errors,而不是枚举for field in form: for error in field.errors: # Display error

{{1}}