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