Ошибка FastAPI при обработке файла вместе с данными формы, определенными в модели PydanticPython

Программы на Python
Anonymous
Ошибка FastAPI при обработке файла вместе с данными формы, определенными в модели Pydantic

Сообщение Anonymous »

По какой-то причине одновременная обработка данных формы и загрузки файла вызывает ошибку.

Код: Выделить всё

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"}
И я тестирую это с помощью документации SwaggerUI:
[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"}'}]
[*]Проверил на отдельном маршруте без «RouteBody», и все работало отлично.
[*] Переписал обработчик маршрута с нуля.
[*]Изменил порядок параметров (не знаю, почему я подумал, что это важно... может быть, так и было?)
[*]Вместо использования типа модели Pydantic для RouteBody я выбрал отдельные параметры, чтобы сделать его функциональным. Однако это не идеальное решение, так как требует перечисления всех параметров, если их много.
[*]Обратился за помощью к ChatGPT


Подробнее здесь: https://stackoverflow.com/questions/790 ... pydantic-m

Вернуться в «Python»