2024-04-25 16:41:22 发布
网友
我试图对一个秘密字符串进行约束。例如,如果我可以,我想要这样的东西:
from pydantic import constr, SecretStr class SimpleModel(BaseModel): password: (SecretStr, constr(min_length=8, max_length=32))
如果有可能做到这一点,我的下一个问题是:我是否可以添加一个约束条件,即需要非单词字符?我可以自己做正则表达式检查,但我正在尝试更充分地采用pydantic
pydantic
目前SecretStr不可能做到这一点。在提交PR之前,您可以使用验证器实现相同的行为:
SecretStr
import re from pydantic import AnyStrMinLengthError, AnyStrMaxLengthError, BaseModel, SecretStr, StrRegexError, validator class SimpleModel(BaseModel): password: SecretStr @validator('password') def has_min_length(cls, v): min_length = 8 if len(v.get_secret_value()) < min_length: raise AnyStrMinLengthError(limit_value=min_length) return v @validator('password') def has_max_length(cls, v): max_length = 32 if len(v.get_secret_value()) > max_length: raise AnyStrMaxLengthError(limit_value=max_length) return v @validator('password') def matches_regex(cls, v): regex = r'.*\W' if not re.match(regex, v.get_secret_value()): raise StrRegexError(pattern=regex) return v
目前
SecretStr
不可能做到这一点。在提交PR之前,您可以使用验证器实现相同的行为:相关问题 更多 >
编程相关推荐