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

Datos 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

Cuando necesitas recibir campos de formulario en lugar de JSON, puedes usarForm.

Información

Para usar formularios, primero instalapython-multipart.

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

$pipinstallpython-multipart

ImportarForm

ImportarForm desdefastapi:

fromtypingimportAnnotatedfromfastapiimportFastAPI,Formapp=FastAPI()@app.post("/login/")asyncdeflogin(username:Annotated[str,Form()],password:Annotated[str,Form()]):return{"username":username}
🤓 Other versions and variants

Tip

Prefer to use theAnnotated version if possible.

fromfastapiimportFastAPI,Formapp=FastAPI()@app.post("/login/")asyncdeflogin(username:str=Form(),password:str=Form()):return{"username":username}

Definir parámetros deForm

Crea parámetros de formulario de la misma manera que lo harías paraBody oQuery:

fromtypingimportAnnotatedfromfastapiimportFastAPI,Formapp=FastAPI()@app.post("/login/")asyncdeflogin(username:Annotated[str,Form()],password:Annotated[str,Form()]):return{"username":username}
🤓 Other versions and variants

Tip

Prefer to use theAnnotated version if possible.

fromfastapiimportFastAPI,Formapp=FastAPI()@app.post("/login/")asyncdeflogin(username:str=Form(),password:str=Form()):return{"username":username}

Por ejemplo, en una de las formas en las que se puede usar la especificación OAuth2 (llamada "password flow") se requiere enviar unusername ypassword como campos de formulario.

Laespecificación requiere que los campos se llamen exactamenteusername ypassword, y que se envíen como campos de formulario, no JSON.

ConForm puedes declarar las mismas configuraciones que conBody (yQuery,Path,Cookie), incluyendo validación, ejemplos, un alias (por ejemplo,user-name en lugar deusername), etc.

Información

Form es una clase que hereda directamente deBody.

Consejo

Para declarar bodies de formularios, necesitas usarForm explícitamente, porque sin él, los parámetros se interpretarían como parámetros de query o como parámetros de body (JSON).

Sobre "Campos de formulario"

La manera en que los formularios HTML (<form></form>) envían los datos al servidor normalmente usa una codificación "especial" para esos datos, es diferente de JSON.

FastAPI se encargará de leer esos datos del lugar correcto en lugar de JSON.

Detalles técnicos

Los datos de formularios normalmente se codifican usando el "media type"application/x-www-form-urlencoded.

Pero cuando el formulario incluye archivos, se codifica comomultipart/form-data. Leerás sobre la gestión de archivos en el próximo capítulo.

Si quieres leer más sobre estas codificaciones y campos de formulario, dirígete a laMDN web docs paraPOST.

Advertencia

Puedes declarar múltiples parámetrosForm en unapath operation, pero no puedes también declarar camposBody que esperas recibir como JSON, ya que el request tendrá el body codificado usandoapplication/x-www-form-urlencoded en lugar deapplication/json.

Esto no es una limitación deFastAPI, es parte del protocolo HTTP.

Recapitulación

UsaForm para declarar parámetros de entrada de datos de formulario.


[8]ページ先頭

©2009-2026 Movatter.jp