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']}
我想做的是按顺序打印错误 在表格中订购。
这可能吗?
最佳答案
字典本质上是无序的(在 Python 中)。但是,WTForms 包括每个字段在字段和表单上的错误,并且它确实保证可以按照声明的顺序枚举字段。因此,与其枚举 form.errors
,不如遍历 form
,然后遍历每个 field.errors
以按顺序排列它们:
for field in form:
for error in field.errors:
# Display error
关于python - 排序 WTForms form.errors dict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15427092/