FastApi pydantic 如何验证电子邮件

ram*_*han 1 python pydantic fastapi

我正在使用 pydantic 来验证我需要验证电子邮件的响应。我正在这样尝试。

class CheckLoginRequest(BaseModel):
    user_email: str = Field(min_length=5,  default="username")
    user_number: str = Field(min_length=5, default="+923323789263")

    @field_validator("user_email")
    def validate_email(self, value):
        try:
            validate_email(value)
        except EmailNotValidError:
            raise ValueError("Invalid email format")
        return value
Run Code Online (Sandbox Code Playgroud)

但它显示错误pydantic.errors.PydanticUserError: @field_validator cannot be applied to instance methods

我尝试使用@validator它,但它已被弃用。

elj*_*efe 5

最现代和记录的方式,afaict,应该使用EmailStr记录的类型,例如此处

from pydantic import EmailStr, Field

class UserBaseSchema(BaseModel):
    """User base schema."""
    email: EmailStr | None = Field(default=None)
Run Code Online (Sandbox Code Playgroud)

它还与其他 FastApi 功能(例如文档和生态系统中的其他工具)完美集成。

注意:它需要安装电子邮件验证器