pydantic 去除空白

dat*_*ews 7 python python-3.x pydantic fastapi

我正在尝试删除名字和姓氏字段以及电子邮件字段上的空格。我无法让它工作。

from pydantic import BaseModel, UUID4, SecretStr, EmailStr, constr

class UserCreate(BaseModel):
    email: EmailStr[constr(strip_whitespace=True)]
    password: SecretStr[constr(strip_whitespace=True)]
    first_name: str[constr(strip_whitespace=True)]
    last_name: str[constr(strip_whitespace=True)]
Run Code Online (Sandbox Code Playgroud)

Yaa*_*ler 10

您可以在模型或基类中添加自定义配置选项:

class UserCreate(BaseModel):
    email: EmailStr
    password: SecretStr
    first_name: str
    last_name: str

    class Config:
        """Extra configuration options"""
        anystr_strip_whitespace = True  # remove trailing whitespace
Run Code Online (Sandbox Code Playgroud)


Pau*_*l P 4

它看起来像是EmailStr为您去除空格,您可以直接使用constr()with而不是strip_whitespace=Truestr

from pydantic import BaseModel, SecretStr, EmailStr, constr

class UserCreate(BaseModel):
    email: EmailStr
    password: SecretStr
    first_name: constr(strip_whitespace=True)
    last_name: constr(strip_whitespace=True)

user = UserCreate(
    email="   email.address@example.com   ",
    password="   some password   ",
    first_name="   First   ",
    last_name="   Last   ",
)
print(user)
# email='email.address@example.com' password=SecretStr('**********') first_name='First' last_name='Last'
#
# Leading and trailing whitespaces removed in email, first_name, last_name.

print(f"'{user.password.get_secret_value()}'")
#'   some password   '
#
# However, not in password.
Run Code Online (Sandbox Code Playgroud)