Класс BaseModel
Класс BaseModel импортируется из модуля pydantic
и служит основой для описания моделей данных в FastAPI.
От него наследуются собственные классы, в которых через
аннотации типов задаются поля. При создании экземпляра
Pydantic проверяет входные данные, приводит их к нужным
типам и выбрасывает ошибку валидации при несоответствии.
Модели BaseModel используются в качестве схем
для тела запроса, ответа и вложенных структур.
Синтаксис
from pydantic import BaseModel
class ModelName(BaseModel):
field: type
Поля объявляются через аннотации типов.
Значение по умолчанию задаётся через присваивание.
Для тонкой настройки полей применяется функция Field.
Пример
Давайте создадим простую модель пользователя и применим её в обработчике POST-запроса:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
name: str
age: int
@app.post('/user')
def create_user(user: User):
return {'name': user.name, 'age': user.age}
Отправим JSON на адрес /user:
{"name": "abcde", "age": 25}
Результат выполнения кода:
{"name": "abcde", "age": 25}
Пример
Давайте передадим строку вместо числа в поле age
и посмотрим, как Pydantic выполнит приведение типа:
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
user = User(name='abcde', age='25')
print(user.age)
Результат выполнения кода:
25
Пример
Давайте зададим значение по умолчанию
и необязательное поле через Field:
from typing import Optional
from pydantic import BaseModel, Field
class Article(BaseModel):
title: str
views: int = Field(default=0)
author: Optional[str] = None
article = Article(title='hello')
print(article)
Результат выполнения кода:
title='hello' views=0 author=None
Смотрите также
-
метод
model_dump,
который превращает модель в словарь -
метод
model_dump_json,
который превращает модель в JSON-строку -
метод
model_validate,
который валидирует словарь и создаёт модель -
функция
Field,
которая настраивает поля модели