Тип conint
Тип conint применяется для создания целочисленных полей
с ограничениями. Он позволяет задать минимальное значение
параметром ge, максимальное значение параметром le,
строгие границы параметрами gt и lt,
а также кратность числа параметром multiple_of.
Тип удобно использовать в моделях Pydantic и в параметрах маршрутов FastAPI.
Синтаксис
from pydantic import conint
field: conint(ge=0, le=100)
Пример
Давайте создадим модель с полем возраста от 18 до 100 лет:
from fastapi import FastAPI
from pydantic import BaseModel, conint
app = FastAPI()
class User(BaseModel):
name: str
age: conint(ge=18, le=100)
@app.post('/user')
def create_user(user: User):
return user
Результат выполнения кода для корректных данных:
{"name": "abcde", "age": 25}
Пример
Давайте проверим, что произойдёт при отправке некорректного возраста:
from fastapi import FastAPI
from pydantic import BaseModel, conint
app = FastAPI()
class User(BaseModel):
name: str
age: conint(ge=18, le=100)
@app.post('/user')
def create_user(user: User):
return user
Результат выполнения кода при значении возраста 10:
{
"detail": [
{
"type": "greater_than_equal",
"loc": ["body", "age"],
"msg": "Input should be greater than or equal to 18",
"input": 10,
"ctx": {"ge": 18}
}
]
}
Пример
Давайте используем conint прямо в параметре маршрута
для ограничения количества товара:
from fastapi import FastAPI
from pydantic import conint
app = FastAPI()
@app.get('/items/{count}')
def get_items(count: conint(gt=0, le=1000)):
return {'count': count}
Результат выполнения кода для адреса /items/5:
{"count": 5}