Add validators to models fields (#9668)

* [python-fastapi] Apply constraints to models

Signed-off-by: Nikita Vakula <programmistov.programmist@gmail.com>

* [python-fastapi] Use pydantic types to validate models fields

Some data formats can be validated by annotating fields with some
special pydantic data types (EmailStr, forr example).

Signed-off-by: Nikita Vakula <programmistov.programmist@gmail.com>

* [python-fastapi] Updated samples

Signed-off-by: Nikita Vakula <programmistov.programmist@gmail.com>
This commit is contained in:
Nikita Vakula
2021-06-07 06:00:04 +02:00
committed by GitHub
parent 088bca1580
commit 599a2ca477
8 changed files with 58 additions and 8 deletions

View File

@@ -2,9 +2,10 @@
from datetime import date, datetime # noqa: F401
import re # noqa: F401
from typing import Dict, List, Optional # noqa: F401
from pydantic import BaseModel, EmailStr, validator # noqa: F401
from pydantic import AnyUrl, BaseModel, EmailStr, validator # noqa: F401
class ApiResponse(BaseModel):

View File

@@ -2,9 +2,10 @@
from datetime import date, datetime # noqa: F401
import re # noqa: F401
from typing import Dict, List, Optional # noqa: F401
from pydantic import BaseModel, EmailStr, validator # noqa: F401
from pydantic import AnyUrl, BaseModel, EmailStr, validator # noqa: F401
class Category(BaseModel):
@@ -20,3 +21,8 @@ class Category(BaseModel):
id: Optional[int] = None
name: Optional[str] = None
@validator("name")
def name_pattern(cls, value):
assert value is not None and re.match(r"^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$", value)
return value

View File

@@ -2,9 +2,10 @@
from datetime import date, datetime # noqa: F401
import re # noqa: F401
from typing import Dict, List, Optional # noqa: F401
from pydantic import BaseModel, EmailStr, validator # noqa: F401
from pydantic import AnyUrl, BaseModel, EmailStr, validator # noqa: F401
class Order(BaseModel):

View File

@@ -2,9 +2,10 @@
from datetime import date, datetime # noqa: F401
import re # noqa: F401
from typing import Dict, List, Optional # noqa: F401
from pydantic import BaseModel, EmailStr, validator # noqa: F401
from pydantic import AnyUrl, BaseModel, EmailStr, validator # noqa: F401
from openapi_server.models.category import Category
from openapi_server.models.tag import Tag

View File

@@ -2,9 +2,10 @@
from datetime import date, datetime # noqa: F401
import re # noqa: F401
from typing import Dict, List, Optional # noqa: F401
from pydantic import BaseModel, EmailStr, validator # noqa: F401
from pydantic import AnyUrl, BaseModel, EmailStr, validator # noqa: F401
class Tag(BaseModel):

View File

@@ -2,9 +2,10 @@
from datetime import date, datetime # noqa: F401
import re # noqa: F401
from typing import Dict, List, Optional # noqa: F401
from pydantic import BaseModel, EmailStr, validator # noqa: F401
from pydantic import AnyUrl, BaseModel, EmailStr, validator # noqa: F401
class User(BaseModel):