当前位置: 首页> 教育> 培训 > 个人特种证件查询网站_宜昌本地网站_有免费推广平台_线上推广的方法

个人特种证件查询网站_宜昌本地网站_有免费推广平台_线上推广的方法

时间:2025/7/12 5:43:31来源:https://blog.csdn.net/MarkAustralia/article/details/141685816 浏览次数:0次
个人特种证件查询网站_宜昌本地网站_有免费推广平台_线上推广的方法

Pydantic 验证

from datetime import datetime
from typing import List, Optional
from pydantic import BaseModel, EmailStr, field_validator, ValidationErrordef check_name(v: str) -> str:"""Validator to be used throughout"""if not v.startswith("小"):raise ValueError("must be startswith 小")return vclass User(BaseModel):id: intname: str = "小卤蛋"age: int# email: EmailStrsignup_ts: Optional[datetime] = Nonefriends: List[str] = []validate_fields = field_validator("name")(check_name)@field_validator("age")  # 此处在pycharm中有warning,上下顺序不能变@classmethoddef check_age(cls, age):if age < 18:raise ValueError("用户年龄必须大于18岁")return ageif __name__ == '__main__':user_data = {"id": 123,"name": "小卤蛋","age": 12,"email": "xiaoludan@example.com",'signup_ts': '2024-07-19 00:22','friends': ["公众号:海哥python", '小天才', b''],}try:user = User(**user_data)print(user)except ValidationError as e:print(f"Validation error: {e.json()}")

调用BaseModel内部参数作为判断条件

class RegisterParams(BaseModel):visibility: VisibilityEnum = Field(VisibilityEnum.PRIVATE)publish_type: int = Field(..., description="类型")dept_codes: List[str] = Field(..., description="部门")@field_validator("publish_type")@classmethoddef check_publish_type(cls, publish_type, values):visibility = values.data.get('visibility').valueif visibility == 'public':publish_type = 0elif visibility == 'private':publish_type = 1else:publish_type = 2if publish_type not in [0, 1, 2]:raise ValueError("publish_type number is wrong.")return publish_type@field_validator("dept_codes")@classmethoddef check_dept_codes(cls, dept_codes, values):visibility = values.data.get('visibility').valueif visibility == 'internal':raise ValueError("dept_codes must be provided, can not be None or [].")return dept_codes

参考:

Pydantic:目前最流行的Python数据验证库_python pydantic-CSDN博客

Models - Pydantic

关键字:个人特种证件查询网站_宜昌本地网站_有免费推广平台_线上推广的方法

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: