Movatterモバイル変換


[0]ホーム

URL:


Saltar a contenido
Join theFastAPI Cloud waiting list 🚀
Follow@fastapi onX (Twitter) to stay updated
FollowFastAPI onLinkedIn to stay updated
Subscribe to theFastAPI and friends newsletter 🎉
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor

Modelos de Formulario

🌐 Traducción por IA y humanos

Esta traducción fue hecha por IA guiada por humanos. 🤝

Podría tener errores al interpretar el significado original, o sonar poco natural, etc. 🤖

Puedes mejorar esta traducciónayudándonos a guiar mejor al LLM de IA.

Versión en inglés

Puedes usarmodelos de Pydantic para declararcampos de formulario en FastAPI.

Información

Para usar formularios, primero instalapython-multipart.

Asegúrate de crear unentorno virtual, activarlo, y luego instalarlo, por ejemplo:

$pipinstallpython-multipart

Nota

Esto es compatible desde la versión0.113.0 de FastAPI. 🤓

Modelos de Pydantic para Formularios

Solo necesitas declarar unmodelo de Pydantic con los campos que quieres recibir comocampos de formulario, y luego declarar el parámetro comoForm:

fromtypingimportAnnotatedfromfastapiimportFastAPI,FormfrompydanticimportBaseModelapp=FastAPI()classFormData(BaseModel):username:strpassword:str@app.post("/login/")asyncdeflogin(data:Annotated[FormData,Form()]):returndata
🤓 Other versions and variants

Tip

Prefer to use theAnnotated version if possible.

fromfastapiimportFastAPI,FormfrompydanticimportBaseModelapp=FastAPI()classFormData(BaseModel):username:strpassword:str@app.post("/login/")asyncdeflogin(data:FormData=Form()):returndata

FastAPIextraerá los datos decada campo de losform data en el request y te dará el modelo de Pydantic que definiste.

Revisa la Documentación

Puedes verificarlo en la interfaz de documentación en/docs:

Prohibir Campos de Formulario Extra

En algunos casos de uso especiales (probablemente no muy comunes), podrías quererrestringir los campos de formulario a solo aquellos declarados en el modelo de Pydantic. Yprohibir cualquier campoextra.

Nota

Esto es compatible desde la versión0.114.0 de FastAPI. 🤓

Puedes usar la configuración del modelo de Pydantic paraforbid cualquier campoextra:

fromtypingimportAnnotatedfromfastapiimportFastAPI,FormfrompydanticimportBaseModelapp=FastAPI()classFormData(BaseModel):username:strpassword:strmodel_config={"extra":"forbid"}@app.post("/login/")asyncdeflogin(data:Annotated[FormData,Form()]):returndata
🤓 Other versions and variants

Tip

Prefer to use theAnnotated version if possible.

fromfastapiimportFastAPI,FormfrompydanticimportBaseModelapp=FastAPI()classFormData(BaseModel):username:strpassword:strmodel_config={"extra":"forbid"}@app.post("/login/")asyncdeflogin(data:FormData=Form()):returndata

Si un cliente intenta enviar datos extra, recibirá un response deerror.

Por ejemplo, si el cliente intenta enviar los campos de formulario:

  • username:Rick
  • password:Portal Gun
  • extra:Mr. Poopybutthole

Recibirá un response de error indicando que el campoextra no está permitido:

{"detail":[{"type":"extra_forbidden","loc":["body","extra"],"msg":"Extra inputs are not permitted","input":"Mr. Poopybutthole"}]}

Resumen

Puedes usar modelos de Pydantic para declarar campos de formulario en FastAPI. 😎


[8]ページ先頭

©2009-2026 Movatter.jp