【问题标题】:How to get multiple form input field as dictionary in fastapi?如何在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(...))

【问题讨论】:

    标签: python python-3.6 fastapi pydantic starlette


    【解决方案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 可能会有所帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多