trapper wrappers( 二 )


输入数据data = https://www.baikexueshe.com/s/{"id":10, "name":"ab", "age":42}

程序Python
from pydantic import BaseModel, ValidationError, validatorfrom typing import Optionalfrom pprint import pprintdata = https://www.baikexueshe.com/s/{"id":10, "name":"ab", "age":42}class User(BaseModel):id: intname: strage: intdept: Optional[str]@validator(\'name\')def validate_name(cls, name):print(\'Length of Name:\', len(name))if len (name) < 3:raise ValueError(\'Name length must be > 3\')return nametry:user = User(**data)print(user)except ValidationError as e: print(e.json())

错误JSON
[{"loc": ["name"],"msg": "Name length must be > 3","type": "value_error"}]

电子邮件验证涵盖电子邮件验证的原因是可以利用 Pydantic 自定义可选email-validator库 。您将需要validate_email从email_validator模块导入 。使用@validator装饰器,我们需要做的就是调用validate_email数据 。
输入数据data = https://www.baikexueshe.com/s/{"id":20, "name":"Sameer", "age":42, "email":"sameer@abc.com"}

程序Python
from pydantic import BaseModel, ValidationError, validator, Requiredfrom typing import Optionalfrom pprint import pprintfrom email_validator import validate_emailclass User(BaseModel):id: intname: strage: intdept: Optional[str]email: str@validator(\'name\')def validateName(cls, name):print(\'Length of Name:\', len(name))if (len(name) < 3):raise ValueError(\'Name length must be > 3\')return name@validator(\'email\')def validateEmail(cls, email):valid_email = validate_email(email)return valid_email.emailtry:user = User(**data)pprint(user)except ValidationError as e:print(e.json())

输出User(id=20, name=\'Sameer\', age=42, dept=None, email=\'sameer@abc.com\')

让我们将值更改email为不正确email-id:
data = https://www.baikexueshe.com/s/{"id":20, "name":"Sameer", "age":42, "email":"sameer"}

错误JSON
[{"loc": ["email"],"msg": "The email address is not valid. It must have exactly one @-sign.","type": "value_error.emailsyntax"}]

它清楚地表明该@标志丢失 。提供正确的 后email-id,它会按顺序返回所有内容 。
结论Pydantic 可以与任何基于 Python 的框架一起使用,它还支持原生 JSON 编码和解码 。正如我们在整篇文章中看到的那样,采用 Pydantic 很简单,它具有各种内置类和装饰器,有助于高效的数据建模、验证和错误处理 。


    特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。