如何在fastapi中获取多个表单输入字段作为字典?
Posted
技术标签:
【中文标题】如何在fastapi中获取多个表单输入字段作为字典?【英文标题】:How to get multiple form input field as dictionary in fastapi? 【发布时间】:2020-06-14 14:24:46 【问题描述】:我必须向 fastapi 端点提交这样的表单,其中包含 14 个输入字段,如下所示
<FORM NAME='TESTFORM' ACTION='URL' METHOD='POST'>
<input type='hidden' name='CURRENCY' value='PAYMENT_CURRENCY'>
<input type='hidden' name='GATEWAYNAME' value='GATEWAY_USED'>
<input type='hidden' name='RESPMSG' value='RESPONSE_MESSAGE_DESCRIPTION'>
<input type='hidden' name='BANKNAME' value='BANK_NAME_OF_ISSUING_PAYMENT_MODE'>
</FORM>
我可以像下面这样一个一个地获取字段。
@app.post("/users/payment/response")
def payment_response_users(
response_currency:str = Form(...), response_gateway:str = Form(...))
所有 14 个字段都采用相同的方式。
但是有没有办法通过单个 pydantic 模式获取所有字段。像下面这样
@app.post("/users/payment/response")
def payment_response_users(
response_model:PaymentRespModel = Form(...))
【问题讨论】:
【参考方案1】:创建一个包含所有字段的类模型,然后添加你的类
from pydantic import BaseModel
class FormData(BaseModel):
response_currency: str
response_gateway: str
# your all fields
def payment_response_users(form_data: FormData):
# your code , access using form_data.response_currency and so on...
【讨论】:
这会产生 400 错误。 “获取请求正文时出错” @sunnysid3up,你能告诉我你在做什么吗,fastapi.tiangolo.com/tutorial/body 可能会有所帮助以上是关于如何在fastapi中获取多个表单输入字段作为字典?的主要内容,如果未能解决你的问题,请参考以下文章
fastapi教程翻译(十六):Form Data(表格数据)