本站资源收集于互联网,不提供软件存储服务,每天免费更新优质的软件以及学习资源!

Pydantic库validator中per参数的执行顺序问题:为什么将per设置为True后_验证方法的执行顺序并非第一位?

网络教程 app 1℃

Pydantic库validator中per参数的执行顺序问题为什么将per设置为True后_验证方法的执行顺序并非第一位

pydantic 库 validator 的 per 参数问题

问题:

pydantic 库 validator 的 per 参数应控制验证方法的执行顺序,但在我将某个 validator 装饰的方法的 per 参数设置为 true 之后,其执行顺序并非第一位。求解惑。

代码示例:

from pydantic import BaseModel, ValidationError, validatorclass UserModel(BaseModel): name: str username: str password1:str password2: str @validator(‘name’) def name_must_contain_space(cls, v,values): print(values,’name’) if ‘ ‘ not in v:raise ValueError(‘must contain a space’) return v.title() @validator(‘password2′) def passwords_match(cls, v, values): print(values,’password2’) if ‘password1’ in values and v != values[‘password1’]:raise ValueError(‘passwords do not match’) return v @validator(‘username’,pre=True) def username_alphanumeric(cls, v,values): print(values,’执行顺序优先’) assert v.isalnum(), ‘must be alphanumeric’ return vuser = UserModel( name=’samuel colvin’, username=’scolvin’, password1=’zxcvbn’, password2=’zxcvbn’,)

答案:

文档中确实说明了 per 参数用于设置 validator 验证方法执行顺序。根据官方示例,应将 @validator(‘username’, pre=true) 放在校验定义的起始位置。

为了解决此问题,可以尝试调换 validator 的顺序,或在 github 上提 issue:github./pydantic/pydantic/blob/main/tests/test_validators.py

以上就是Pydantic 库 validator 中 per 参数的执行顺序问题:为什么将 per 设置为 True 后,验证方法的执行顺序并非第一位?的详细内容,更多请关注范的资源库其它相关文章!

转载请注明:范的资源库 » Pydantic库validator中per参数的执行顺序问题:为什么将per设置为True后_验证方法的执行顺序并非第一位?

喜欢 (0)