Код: Выделить всё
from typing import AnnotatedКод: Выделить всё
from pydantic import BaseModel, StringConstraints, EmailStrКод: Выделить всё
class RouteBody(BaseModel):
email: Annotated[EmailStr, StringConstraints(
max_length = 255
)]
password: Annotated[str, StringConstraints(
max_length = 60
)]
Код: Выделить всё
from fastapi import UploadFile, FileКод: Выделить всё
@some_api_router.post("/some-route")
async def handleRoute(routeBody: RouteBody = Form(), profilePicture: UploadFile = File(...)):
return {"msg": "Route"}
[img]https://i. sstatic.net/VC7Fugzt.png[/img]
Я получаю следующую ошибку:
Код: Выделить всё
error [{'type': 'model_attributes_type', 'loc': ('body', 'routeBody'), 'msg': 'Input should be a valid dictionary or object to extract fields from', 'input': '{"email":"user@example.com","password":"string"}'}][*] Переписал обработчик маршрута с нуля.
[*]Изменил порядок параметров (не знаю, почему я подумал, что это важно... может быть, так и было?)
[*]Вместо использования типа модели Pydantic для RouteBody я выбрал отдельные параметры, чтобы сделать его функциональным. Однако это не идеальное решение, так как требует перечисления всех параметров, если их много.
[*]Обратился за помощью к ChatGPT
Подробнее здесь: https://stackoverflow.com/questions/790 ... pydantic-m
Мобильная версия