Почтовый запрос формы возвращает пустой ImmutableMultiDict в Flask - PullRequest
1 голос
/ 27 мая 2020

Я отправляю запрос с веб-страницы:

<script>
  function sendGenre() {
    let form = document.getElementById("genreForm");
    form.value = document.getElementById("genre").value;
    console.log(form.value);
    form.submit();
  }
</script>
  <form class="adminPlaylistMainForm" action="createlist" id="genreForm" method="POST">
    <div class="playlistGenre">
      <p>From what genre ?</p>
      <select class="adminPlaylistGenreButton" id="genre">
        <option value="all">All</option>
        <option value="jazz">Jazz</option>
        <option value="punk">Punk</option>
        <option value="rock">Rock</option>
      </select>
      <p><input type="button" onclick="sendGenre();" value="Send form" /></p>
    </div>
  </form>

Серверная часть:

@app.route('/createlist', methods=['POST', 'GET'])
def create_list():
    if request.method == "POST":
        print("/createlist request.method == POST")
        print(request.form)
    return render_template("tools/createlist.html")

The console.log (form.value) в функция печатает значение, console.log (form) печатает полный <form> и его содержимое, но в терминале на внутренней стороне я получаю:

/createlist request.method == POST
ImmutableMultiDict([])

Вы хоть представляете, в чем проблема?

1 Ответ

1 голос
/ 30 мая 2020

Проблема в том, как вы отправляете форму. Вам нужно добавить атрибут имени к вашему тегу select. Вот так: <select class="adminPlaylistGenreButton" id="genre" name="genre">

Если вы выбрали форму HTML, то JavaScript вам не нужно. Замените кнопку отправки на <input type="submit" value="Send form">

...