Данные формы Fastapi из коммутатора Bootstrap 5

#python-3.x #fastapi #bootstrap-5

Вопрос:

Я хочу использовать коммутатор из начальной загрузки 5:

 <div class="form-check form-switch">
        <input class="form-check-input" type="checkbox" name="yes_no" id="flexSwitchCheckDefault">
        <label class="form-check-label" for="flexSwitchCheckDefault">Yes</label>
</div>
 

Это работает , когда кнопка переключения «Включена» или True , но когда она «выключена», я получаю следующую ошибку в консоли:

 "?[1mPOST /form HTTP/1.1?[0m" ?[31m422 Unprocessable Entity?[0m
 

И это в интерфейсе:

 {"detail":[{"loc":["body","yes_no"],"msg":"field required","type":"value_error.missing"}]}
 

Попробовал с if/else помощью оператора на Python:

 @app.post("/form")
def form_post(request: Request,
              yes_no: bool = Form(...)):
    if yes_no:
        print(yes_no)
    else:
        print("No")
    return templates.TemplateResponse("form_response.html", 
                                      context={'request':request}
 

Но я все равно получаю ту же ошибку. Я также пробовал другие вещи, такие как yes_no:str = Form(...) , но все равно та же ошибка.

Вывод, который я хочу, — это значение «Да», если переключатель «Включен» или True , и значение «Нет», если значение «Выключено» или False .

Комментарии:

1. Я бы подумал, что значение по умолчанию должно работать: yes_no: bool = Form(False) ?

2. Это было так просто, да :Д. Спасибо, Матслинд, если хочешь, можешь отправить ответ, и я с радостью приму его. Было бы хорошо и на будущее 😉

Ответ №1:

Если вы хотите, чтобы значение было необязательным, укажите значение по умолчанию:

 @app.post("/form")
def form_post(request: Request,
              yes_no: bool = Form(False)):