大家在用 Flask 的时候,是如何校验数据的类型和值的?
我之前用过 Django + DRF ,Django 的 Forms 和 DRF 的 Serializer 都很香,校验和处理数据
但是 Flask 有点让我发愁,手动用大量的 if 看起来费时费力,不太美观
有没有现成的第三方库可以用的,并且可以自定义抛出异常的类型并捕获
之前看过一些 FastAPI 用的 Pydantic 还有 Marshmallow
Pydantic 抛出的异常可能我不知道正确的打开方式,不太会用
比如说:
from enum import Enum
from pydantic import (
BaseModel,
Field,
)
class HolidayTypeEnum(str, Enum):
ANNUAL_LEAVE = "annual_leave"
SICK_LEAVE = "sick_leave"
class Holiday(BaseModel):
holiday_name: str = Field(..., description="请填写假期名称")
holiday_type: HolidayTypeEnum = Field(..., description="请填写假期类型")
data = {
"holiday_name": "年假",
"holiday_type": "annual_leave1",
}
holiday = Holiday(**data)
抛出的异常是:
pydantic.error_wrappers.ValidationError: 1 validation error for Holiday
holiday_type
value is not a valid enumeration member; permitted: 'annual_leave', 'sick_leave' (type=type_error.enum; enum_values=[<HolidayTypeEnum.ANNUAL_LEAVE: 'annual_leave'>, <HolidayTypeEnum.SICK_LEAVE: 'sick_leave'>])
如何提示给前端到底错在哪里(之前手动校验的时候,是可以直接抛出指定异常,比如说 raise ValueError("假期类型错误,只能为 XXX 、XXX")
)
也许 Pydantic 是很好,但是我好像不太会用,有没有大佬有正确的打开方式,或者说其他可以拿来就用的第三方库
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.