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

建设网站的整个费用预算做网站分几步

建设网站的整个费用预算,做网站分几步,cms网站建站流程,遵义网络科技有限公司1. 简介 pydantic 库是一种常用的用于数据接口 schema 定义与检查的库。 通过 pydantic 库#xff0c;我们可以更为规范地定义和使用数据接口#xff0c;这对于大型项目的开发将会更为友好。 当然#xff0c;除了 pydantic 库之外#xff0c;像是 valideer 库、marshmallo…1. 简介 pydantic 库是一种常用的用于数据接口 schema 定义与检查的库。 通过 pydantic 库我们可以更为规范地定义和使用数据接口这对于大型项目的开发将会更为友好。 当然除了 pydantic 库之外像是 valideer 库、marshmallow 库、trafaret 库以及 cerberus 库等都可以完成相似的功能但是相较之下pydantic 库的执行效率会更加优秀一些。 因此这里我们仅针对 pydantic 库来介绍一下如何规范定义标准 schema 并使用。 安装部署 pip install pydantic2. 使用方法 2.1. schema 基本定义 pydantic 库的数据定义方式是通过 BaseMode l类来进行定义的所有基于pydantic的数据类型本质上都是一个BaseModel类它最基本的使用方式如下 from pydantic import BaseModelclass Person(BaseModel):name: str2.2. schema 基本实例化 调用时我们只需要对其进行实例化即可实例化方法有以下几种 直接传值 p Person(nameTom) print(p.json()) # {name: Tom}通过字典传入 p {name: Tom} p Person(**p) print(p.json()) # {name: Tom}通过其他的实例化对象传入 p2 Person.copy(p) print(p2.json()) # {name: Tom}2.3. 异常处理 当传入值错误的时候pydantic就会抛出报错例如 Person(personTom) # 定义为name而非personpydantic会抛出异常 ValidationError: 1 validation errors for Person namefield required (typevalue_error.missing)2.4. 参数过滤 另一方面如果传入值多于定义值时BaseModel 也会自动对其进行过滤。如 p Person(nameTom, genderman, age24) print(p.json()) # {name: Tom}可以看到额外的参数 gender 与 age 都被自动过滤了。 通过这种方式数据的传递将会更为安全但是同样的这也要求我们在前期的 schema 定义中必须要尽可能地定义完全。 2.5. 阴性类型转换 此外pydantic 在数据传输时会直接进行数据类型转换因此如果数据传输格式错误但是可以通过转换变换为正确的数据类型是数据传输也可以成功例如 p Person(name123) print(p.json()) # {name: 123}3. pydantic 数据类型 3.1. 基本数据类型 下面我们来看一下pydantic中的一些常用的基本类型。 from pydantic import BaseModel from typing import Dict, List, Sequence, Set, Tupleclass Demo(BaseModel):a: int # 整型b: float # 浮点型c: str # 字符串d: bool # 布尔型e: List[int] # 整型列表f: Dict[str, int] # 字典型key为strvalue为intg: Set[int] # 集合h: Tuple[str, int] # 元组3.2. 高级数据结构 这里我们给出一些较为复杂的数据类型的实现。 3.2.1. enum 数据类型 enum型数据类型我们可以通过enum库进行实现给出一个例子如下 from enum import Enumclass Gender(str, Enum):man manwomen women3.2.2. 可选数据类型 如果一个数据类型不是必须的可以允许用户在使用中不进行传入则我们可以使用typing库中的Optional方法进行实现。 from typing import Optional from pydantic import BaseModelclass Person(BaseModel):name: strage: Optional[int]需要注意的是设置为可选之后数据中仍然会有age字段但是其默认值为None即当不传入age字段时Person仍然可以取到age只是其值为None。例如 p Person(nameTom) print(p.json()) # {name: Tom, age: None}3.2.3. 数据默认值 上述可选数据类型方法事实上是一种较为特殊的给予数据默认值的方法只是给其的默认值为None。这里我们给出一些更加一般性的给出数据默认值的方法。 from pydantic import BaseModelclass Person(BaseModel):name: strgender: str manp Person(nameTom) print(p.json()) # {name: Tom, gender: man}3.2.4. 允许多种数据类型 如果一个数据可以允许多种数据类型我们可以通过 typing 库中的 Union 方法进行实现。 from typing import Union from pydantic import BaseModelclass Time(BaseModel):time: Union[int, str]t Time(time12345) print(t.json()) # {time: 12345} t Time(time 2020-7-29) print(t.json()) # {time: 2020-7-29}3.2.5. 异名数据传递 假设我们之前已经定义了一个schema将其中某一个参量命名为了A但是在后续的定义中我们希望这个量被命名为B要如何完成这两个不同名称参量的相互传递呢 我们可以通过 Field 方法来实现这一操作。 from pydantic import BaseModel, Fieldclass Password(BaseModel):password: str Field(alias key)则在传入时我们需要用key关键词来传入password变量。 p Password(key123456) print(p.json()) # {password: 123456}3.2.6. 多级 schema 定义 这里我们给出一个较为复杂的基于pydantic的schema定义实现样例。 from enum import Enum from typing import List, Union from datetime import date from pydantic import BaseModelclass Gender(str, Enum):man manwomen womenclass Person(BaseModel):name : strgender : Genderclass Department(BaseModel):name : strlead : Personcast : List[Person]class Group(BaseModel):owner: Personmember_list: List[Person] []class Company(BaseModel):name: strowner: Union[Person, Group]regtime: datedepartment_list: List[Department] []需要注意的是我们除了可以一步一步地实例化之外如果我们已经有了一个完整的Company的内容字典我们也可以一步到位地进行实例化。 sales_department {name: sales,lead: {name: Sarah, gender: women},cast: [{name: Sarah, gender: women},{name: Bob, gender: man},{name: Mary, gender: women}] }research_department {name: research,lead: {name: Allen, gender: man},cast: [{name: Jane, gender: women},{name: Tim, gender: man}] }company {name: Fantasy,owner: {name: Victor, gender: man},regtime: 2020-7-23,department_list: [sales_department,research_department] }company Company(**company)3.3. 数据检查 pydantic 本身提供了上述基本类型的数据检查方法但是除此之外我们也可以使用 validator 和 config 方法来实现更为复杂的数据类型定义以及检查。 3.3.1. validator用法 使用validator方法我们可以对数据进行更为复杂的数据检查。 import re from pydantic import BaseModel, validatorclass Password(BaseModel):password: strvalidator(password)def password_rule(cls, password):def is_valid(password):if len(password) 6 or len(password) 20:return Falseif not re.search([a-z], password):return Falseif not re.search([A-Z], password):return Falseif not re.search(\d, password):return Falsereturn Trueif not is_valid(password):raise ValueError(password is invalid)通过这种方式我们就可以额外对密码类进行格式要求对其字符数以及内部字符进行要求。 3.3.2. Config 方法 如果要对BaseModel中的某一基本型进行统一的格式要求我们还可以使用Config方法来实现。 from pydantic import BaseModelclass Password(BaseModel):password: strclass Config:min_anystr_length 6 # 令Password类中所有的字符串长度均要不少于6max_anystr_length 20 # 令Password类中所有的字符串长度均要不大于204. 模型属性 dict() 模型字段和值的字典 json() JSON 字符串表示dict() copy() 模型的副本默认为浅表副本 parse_obj() 使用dict解析数据 parse_raw 将str或bytes并将其解析为json然后将结果传递给parse_obj parse_file 文件路径读取文件并将内容传递给parse_raw。如果content_type省略则从文件的扩展名推断 from_orm() 从ORM 对象创建模型 schema() 返回模式的字典 schema_json() 返回该字典的 JSON 字符串表示 construct() 允许在没有验证的情况下创建模型 fields_set 初始化模型实例时设置的字段名称集 fields 模型字段的字典 config 模型的配置类 参考 https://blog.csdn.net/codename_cys/article/details/107675748 https://www.cnblogs.com/dyl0/articles/16896330.html
http://www.dnsts.com.cn/news/24657.html

相关文章:

  • 易语言做网站登陆高流量网站开发框架经验
  • 营销型网站建设的步骤流程是什么家居企业网站建设教程
  • 全球网站免费空间注册社交网站开发教程
  • 网站建设学什么软件杭州工程招标网
  • 江苏齐力建设集团网站改织梦模板做网站
  • 做防护信息的网站wordpress搭建vip下载站
  • 模板网站免费钱币网站建设
  • 做网站设计的总结数商云电子商务网站建设
  • 公司手机网站建设公司网站建设包括
  • 网站建设分期进行怎么入账郑州企业网络推广
  • 手机网站建设西安ru域名注册
  • wordpress支付宝打赏深圳百度关键字优化
  • WordPress地址栏seo对于电子商务网站推广的作用
  • 昆山h5网站建设网站排版策划
  • 整站seo优化推广个人网页制作多少钱
  • 找个专门做各种外卖的网站seo外包服务
  • 网站建设规划过程和钓鱼网站制作方法
  • 国外优秀vi设计网站方象科技专注于什么领域
  • 清河做网站哪家好互联网产品设计网站
  • 宝安商城网站建设哪家效益快智能网站建设哪家效果好
  • 51自学网官方网站成都旅游住哪里
  • 案例网站有哪些科技公司图片
  • 深圳网站定制深圳网站建设公司女做受视频网站
  • net快速建站百度文库个人登录入口
  • 做兼职那个网站比较好广州网站快速优化排名
  • 网页设计网站模板素材找人做淘宝网站需要多少钱
  • 廊坊优化技巧优化教程网官网
  • 你注册过的那些网站网站建设公司 销量
  • 做网站3年网站设计师薪资
  • 重庆网站建设技术上海门户网站开发