Pydnatic throws ‘ValidationError’ whenever it see an issue while validating the data.
validation_error_1.py
from pydantic import BaseModel, ValidationError, conint, constr
class Employee(BaseModel):
id: int
name: constr(min_length=3, max_length=10)
age: conint(gt=18)
try:
emp1 = Employee(id = 1, name = 'Pt', age = 8)
except ValidationError as e:
print(e)
Output
2 validation errors for Employee name ensure this value has at least 3 characters (type=value_error.any_str.min_length; limit_value=3) age ensure this value is greater than 18 (type=value_error.number.not_gt; limit_value=18)
As you see the output, Pydantic will return the list of errors found in the input data.
Different ways to extract the information from ValidaitonError object
Method |
Description |
e.errors() |
method will return list of errors found in the input data. |
e.json() |
method will return a JSON representation of errors. |
str(e) |
method will return a human readable representation of the errors. |
validation_error_2.py
from pydantic import BaseModel, ValidationError, conint, constr
class Employee(BaseModel):
id: int
name: constr(min_length=3, max_length=10)
age: conint(gt=18)
try:
emp1 = Employee(id = 1, name = 'Pt', age = 8)
except ValidationError as e:
print(e.errors())
print('\n\n\n')
print(e.json())
print('\n\n\n')
print(str(e))
Output
[{'loc': ('name',), 'msg': 'ensure this value has at least 3 characters', 'type': 'value_error.any_str.min_length', 'ctx': {'limit_value': 3}}, {'loc': ('age',), 'msg': 'ensure this value is greater than 18', 'type': 'value_error.number.not_gt', 'ctx': {'limit_value': 18}}] [ { "loc": [ "name" ], "msg": "ensure this value has at least 3 characters", "type": "value_error.any_str.min_length", "ctx": { "limit_value": 3 } }, { "loc": [ "age" ], "msg": "ensure this value is greater than 18", "type": "value_error.number.not_gt", "ctx": { "limit_value": 18 } } ] 2 validation errors for Employee name ensure this value has at least 3 characters (type=value_error.any_str.min_length; limit_value=3) age ensure this value is greater than 18 (type=value_error.number.not_gt; limit_value=18)
{
"loc": [
"age"
],
"msg": "ensure this value is greater than 18",
"type": "value_error.number.not_gt",
"ctx": {
"limit_value": 18
}
}
As you see above snippet, each error object contain properties loc, msg, type and ctx. Below table summarizes the properties.
Property |
Description |
loc |
Specifies the error's location as a list. The first item in the list will be the field where the error occurred, |
msg |
Human readable error message |
type |
Computer readable identifier for the error type |
ctx |
an optional object which contains values required to render the error message. |
Previous Next Home
No comments:
Post a Comment