欢迎访问宙启技术站
智能推送

marshmallow数据校验错误:ValidationError()异常解析

发布时间:2023-12-25 08:26:35

ValidationError()异常是marshmallow库中的一个异常类,用于表示数据校验错误。当使用marshmallow进行数据校验时,如果数据不符合定义的规则,就会抛出该异常。

下面是一个使用marhsmallow进行数据校验的例子,以及对ValidationError()异常的解析。

首先,我们定义一个简单的User类,用于存储用户的姓名和年龄。

from marshmallow import Schema, fields, ValidationError

class User:
    def __init__(self, name, age):
        self.name = name
        self.age = age

class UserSchema(Schema):
    name = fields.Str(required=True)
    age = fields.Int(required=True)

然后,我们创建一个User对象,并使用UserSchema对其进行数据校验。

schema = UserSchema()

try:
    user = User(name="John", age="twenty")
    schema.load(user)
except ValidationError as e:
    print(e.messages)

在上面的代码中,我们创建了一个User对象,其中name是一个字符串,age是一个不合法的值"twenty"。然后,我们使用UserSchema的load()方法对该对象进行数据校验。

由于age不是一个合法的整数,所以在数据校验过程中会抛出一个ValidationError()异常。我们可以通过捕获该异常,并使用e.messages属性获取校验错误的具体信息。

执行上面的代码,输出结果为:

{'age': ['Not a valid integer.']}

可以看到,ValidationError()异常的messages属性返回了一个字典,其中包含了校验错误的字段和对应的错误信息。在这个例子中,我们可以看到"age"字段的错误信息是"Not a valid integer."

除了e.messages属性,ValidationError()异常还提供了其他有用的属性,如e.field_names、e.field_errors等,用于获取更详细的校验错误信息。

以上就是对ValidationError()异常的解析以及使用marshmallow进行数据校验的一个例子。通过捕获该异常,并解析其中的错误信息,我们可以更好地处理数据校验错误。