当前位置: 首页 > wzjs >正文

网站建设的空间选择网站建设要求

网站建设的空间选择,网站建设要求,互联在线app开发网站,河南网站搭建数据模型-pydantic 1. 基本用法 通过继承 BaseModel,你可以定义一个数据模型类。类的属性使用类型注解来声明字段的类型 from pydantic import BaseModelclass User(BaseModel):name: strage: intis_active: bool True # 默认值字段类型​:每个字段…

数据模型-pydantic

1. 基本用法

通过继承 BaseModel,你可以定义一个数据模型类。类的属性使用类型注解来声明字段的类型

from pydantic import BaseModelclass User(BaseModel):name: strage: intis_active: bool = True  # 默认值
  • 字段类型​:每个字段需要指定类型(如 str, int, bool 等)。
  • ​默认值​:可以给字段设置默认值(如 is_active: bool = True)

2. 数据验证​

当用数据初始化模型时,pydantic 会自动验证数据的类型和约束。如果数据不合法,会抛出 ValidationError

# 合法数据
user1 = User(name="Alice", age=30)
print(user1)  # name='Alice' age=30 is_active=True# 非法数据(类型错误)
try:user2 = User(name="Bob", age="thirty")
except ValidationError as e:print(e)  # 输出错误详情:age 不是整数

3. 模型实例的属性​

模型实例的字段可以直接通过属性访问:

print(user1.name)       # Alice
print(user1.age)        # 30
print(user1.is_active)  # True

4. 字段类型与自动转换

pydantic 会尝试将输入数据转换为声明的类型。例如,字符串 “30” 会被转换为整数 30

user3 = User(name="Charlie", age="30", is_active="no")
print(user3)  # name='Charlie' age=30 is_active=False

5. 可选字段与必需字段​

  • 默认情况下,所有没有默认值的字段都是必填字段。
  • 如果某个字段可以是 None 或可选,需要用 Optional 或 Union
from typing import Optionalclass User(BaseModel):name: strage: Optional[int] = None  # 可选字段

6. 嵌套模型​

BaseModel 可以嵌套其他 BaseModel

class Address(BaseModel):street: strcity: strclass User(BaseModel):name: straddress: Address  # 嵌套模型user = User(name="Alice", address={"street": "Main St", "city": "New York"})
print(user.address.city)  # New York

7. 自定义验证器​

使用 @validator 装饰器添加自定义验证逻辑

from pydantic import validatorclass User(BaseModel):name: strage: int@validator("age")def age_must_be_positive(cls, v):if v < 0:raise ValueError("年龄不能为负数")return vtry:user = User(name="Bob", age=-10)
except ValidationError as e:print(e)  # 年龄不能为负数

8. 模型配置​

通过内部的 Config 类可以配置模型行为:

class User(BaseModel):name: strage: intclass Config:allow_mutation = False  # 禁止修改实例extra = "forbid"        # 禁止额外字段user = User(name="Alice", age=30)
user.age = 31  # 抛出错误:实例不可变

常用配置选项:

  • allow_mutation: 是否允许修改实例
  • extra: 控制额外字段的行为(allow、ignore、forbid)。
  • json_encoders: 自定义 JSON 编码方式

9. 数据解析与导出​

  • ​解析数据​:用 parse_obj 或 parse_raw 解析字典或 JSON 字符串。
  • ​导出数据​:用 dict() 或 json() 导出为字典或 JSON
user_data = {"name": "Alice", "age": 30}
user = User.parse_obj(user_data)  # 从字典解析print(user.dict())  # {'name': 'Alice', 'age': 30, 'is_active': True}
print(user.json())  # {"name": "Alice", "age": 30, "is_active": true}

10. 动态默认值​

如果默认值需要动态生成(例如列表),使用 default_factory:

from typing import List
from pydantic import Fieldclass Model(BaseModel):items: List[str] = Field(default_factory=list)model = Model()
print(model.items)  # []

11. 字段别名​

可以通过 alias 设置字段的别名(用于解析数据)

class User(BaseModel):name: strage: int = Field(..., alias="user_age")user = User.parse_obj({"name": "Alice", "user_age": 30})
print(user.age)  # 30

总结​

BaseModel 的核心功能包括:

1、​数据验证​:确保输入数据符合类型和约束。
2、​自动类型转换​:将输入数据转换为声明类型。
3、​嵌套模型​:支持复杂数据结构。
4、​自定义验证​:通过 @validator 添加业务逻辑。
5、​灵活的配置​:通过 Config 类控制模型行为


文章转载自:

http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://00000000.fqyxb.cn
http://www.dtcms.com/wzjs/619901.html

相关文章:

  • 个人怎么做一个网站成都建设局官网
  • 网站建设与优化及覆盖率方案江苏省建设网站
  • 简述网站与网页的区别广电基础设施建设官方网站
  • 线上网站怎么做wordpress弹窗网页
  • wordpress建的网站打开太慢网页在线代理
  • 湖州做网站公司有那几家网站备案有幕布
  • 网站升级中模板自己有网站怎么优化
  • 哪个网站帮别人做pptwordpress 收费版
  • 公司的网站建设公司WordPress写文章本地上传
  • 网站的pdf目录怎么做的河源公司做网站
  • 对企业网站的印象网站图片尺寸大小
  • 做网站赚钱平台凡科建站官网地址
  • 举报网站建设情况 汇报如何制作微信小程序答题
  • 有哪些做数据分析的网站wordpress网页排版插件
  • 泉州网站开发公司公司装修放假期间有没有工资
  • 网站seo多少钱百度上搜不到网站
  • 教你做企业网站小雨免费主机
  • 西斗门的网站建设企业域名怎么查找
  • 做手机网站多少钱个人博客主页登录
  • 做网站推广一般多少钱莱州市网站
  • 网站建设合同浩森宇特东平县住房和城乡建设局网站
  • 舟山高端网站建设中企动力网站模板
  • 网站关键字排名怎么做重庆市教育考试院门户网站
  • iis7如何部署网站西安网站制作工程师
  • 网站加载等待wordpress泛域名解析
  • 荆门做网站公司有什么网站可以做免费推广
  • 网站的建立步骤移动商城积分怎么用
  • 网站设计开户东莞佳诚网站建设有限公司
  • php网站制作报价网站后台的制作
  • 深圳 教育集团网站建设现在做一个app大概多少钱