Как получить поле ввода нескольких форм в виде словаря в fastapi?

Я должен отправить такую ​​​​форму на конечную точку 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(...))

person Smaranjit    schedule 02.03.2020    source источник


Ответы (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...
person yogesh    schedule 05.03.2020
comment
Это приводит к ошибке 400. Ошибка получения тела запроса - person sunnysid3up; 02.06.2020
comment
@sunnysid3up, не могли бы вы сообщить мне, что вы делаете, fastapi.tiangolo.com/tutorial/body может помочь - person yogesh; 03.06.2020