dev.to | 📄 原文链接 | 2026-11-04 收录

FastAPI 0.162.0 修掉了一个从未真正生效的必选复选框

来源:dev.to — 2026-11-03

📋 概述

作者写了个带必选同意框的注册接口,不勾选提交居然 200 通过,还被记成 False。问题出在 0.161.1:任何表单里的布尔字段只要缺失就被强制转成 False,无论是 Form(True) 还是 Form(...)。0.162.0 修正了这个默认值推断,作者用两个虚拟环境、相同的 Pydantic 与 Starlette 版本对比实测了三种声明的前后差异。

🔑 核心要点

💡 金句

“Declaring a field required with Form(...) is supposed to mean the client must send it. On 0.161.1, that constraint simply didn't exist for booleans — the field was always "present," just always False.”
译:用 Form(...) 声明必选,本意是客户端必须传。但在 0.161.1 上,这个约束对布尔字段根本不存在——字段永远「存在」,只是永远是 False。
← 返回 dev.to 首页