Flask, почему request.form выдает ошибку 400? - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь извлечь текст из следующего кода HTML:

@app.route("/", methods=['GET', 'POST'])
def home():
  if request.method == 'POST':
    H_desiderata = float(request.form.get('H_desiderata')) #THIS CAUSES THE ERROR
    return render_template('form1.html')

HTML ниже:

    <body>
      <h2>Brioche Recipe</h2>
        <form>
          <div class="grid-container">
            <div class="grid-item">
      
              <label class="text" for="H_desiderata">
              H_desiderata:
               </label><be>
               <input type="number" id="H_desiderata" name="H_desiderata1" 
               value={{val_H_desiderata}} min="1" max="99" step="1"><br>

Перед тем, как поместить его в сетку, он работал:

enter image description here

old working code:


  

Как мне адаптировать request.form для возврата значения в поле ввода?

1 Ответ

1 голос
/ 04 августа 2020

В вашем коде так много неправильного, но давайте начнем с этого:

request.form пусто, когда request.method == "GET. Так. request.form['H_desiderata'] выдаст ключевую ошибку.

Переместите это в раздел POST вашего представления. Также используйте request.form.get('H_desiderata', -9999999), если он не определен.

UPDATE:

ОК, теперь попробуйте:

if request.method == 'POST':
    print(request.form)
    print(request.form.get('H_desiderata'))
    print(float(request.form.get('H_desiderata')))
    H_desiderata = float(request.form.get('H_desiderata'))

Тогда вы захочется:

return render_template('form1.html', val_H_desiderata=H_desiderata)

UPDATE2:

Ваш тег <form> неверен. Попробуйте:

<form action="/" method="post">

UPDATE3:

Вы измените имя ввода, поэтому измените его на: request.form.get('H_desiderata1')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...