跳转到内容

电话号码

pydantic_extra_types.phone_numbers 模块提供了 PhoneNumber 数据类型。

此类依赖于 [phonenumbers] 包,它是谷歌 [libphonenumber] 的 Python 移植版。

PhoneNumber

基类: str

phonenumbers 包的封装类,该包是谷歌 libphonenumber 的 Python 移植版。

supported_regions class-attribute instance-attribute

supported_regions: list[str] = []

支持的区域。如果为空,则支持所有区域。

default_region_code class-attribute

default_region_code: str | None = None

解析没有国际前缀的电话号码时使用的默认区域代码。

phone_format class-attribute instance-attribute

phone_format: str = 'RFC3966'

电话号码的格式。

PhoneNumberValidator dataclass

PhoneNumberValidator(
    default_region: Optional[str] = None,
    number_format: str = "RFC3966",
    supported_regions: Optional[Sequence[str]] = None,
)

一个用于电话号码的 Pydantic 前置验证器 (before validator),它使用 phonenumbers 包,该包是谷歌 libphonenumber 的 Python 移植版。

旨在通过 typing.Annotated 类型构造创建自定义的 Pydantic 数据类型。

参数

名称 类型 描述 默认值
default_region str | None

解析没有国际前缀的电话号码时使用的默认区域代码。如果为 None(默认值),则必须在电话号码中以国际前缀的形式提供区域信息。

None
number_format str

要返回的电话号码的格式。有效值请参见 phonenumbers.PhoneNumberFormat

'RFC3966'
supported_regions list[str]

支持的区域。如果为空,则支持所有区域(默认)。

None

返回:str:格式化后的电话号码。

示例

MyNumberType = Annotated[ Union[str, phonenumbers.PhoneNumber], PhoneNumberValidator() ] USNumberType = Annotated[ Union[str, phonenumbers.PhoneNumber], PhoneNumberValidator(supported_regions=['US'], default_region='US') ]

class SomeModel(BaseModel): phone_number: MyNumberType us_number: USNumberType