跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 如何利用 Pydantic 做类型强制检查?
未分類
16 1 月 2021

如何利用 Pydantic 做类型强制检查?

如何利用 Pydantic 做类型强制检查?

資深大佬 : fanqieipnet 5

如何利用 Pydantic 做类型强制检查?今天番茄加速就来讲一下。

   FastAPI 基于 Pydantic,Pydantic 主要用来做类型强制检查。参数赋值,不符合类型要求,就会抛出异常。

  对于 API 服务,支持类型检查非常有用,会让服务更加健壮,也会加快开发速度,因为开发者再也不用自己写一行一行的做类型检查。

  首先 pip install pydantic

  然后,使用 Pydantic 做强制类型检查。

   from pydantic import ValidationError

   from datetime import datetime

   from typing import List

   from pydantic import BaseModel

   class User(BaseModel):

   id:int

   name=’jack guo’

   signup_timestamp: datetime = None

   friends: List[int] = []

  观察到:

   id 要求必须为 int

   name 要求必须为 str, 且有默认值

   signup_timestamp 要求为 datetime, 默认值为 None

   friends 要求为 List,元素类型要求 int, 默认值为 []

  使用 User 类:

   try:

   User(signup_timestamp=’not datetime’,friends=[1,2,3,’not number’])

   except ValidationError as e:

   print(e.json())

   id 没有默认值,按照预期会报缺失的异常

   signup_timestamp 被赋为非 datetime 类型值,按照预期会报异常

   friends 索引为 3 的元素被赋值为 str,按照预期也会报异常

  执行代码,验证是否符合预期。

  执行结果显示,符合预期

  [

  {

  ”loc”: [

  ”id”

  ],

  ”msg”: “field required”,

  ”type”: “value_error.missing”

  },

  {

  ”loc”: [

  ”signup_timestamp”

  ],

  ”msg”: “invalid datetime format”,

  ”type”: “value_error.datetime”

  },

  {

  ”loc”: [

  ”friends”,

   3

  ],

  ”msg”: “value is not a valid integer”,

  ”type”: “type_error.integer”

  }

  ]

大佬有話說 (2)

  • 資深大佬 : hsfzxjy

    就问排版能不能整好点

  • 資深大佬 : johnsona

    和 marshmallow 什么区别

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具