首页 > 解决方案 > pydantic 去除空白

问题描述

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

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)]

标签: pythonpython-3.xfastapipydantic

解决方案


看起来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.

推荐阅读