Отправка значения флажка в колбу - PullRequest
0 голосов
/ 03 марта 2019

У меня есть форма, которая выглядит следующим образом:

<form id="settings" action="{{ url_for("load_settings") }}" method="post">
... 

    <label for="m_r">Interval 1</label>
    <input type="text" name="morn_r" id="m_r">

    <label for="d1_e">Enabled</label>
    <input type="checkbox" name="d_enabled" id="d1_e" value="off" onclick="toggle_check(this)">
</form>

Это функция toggle_check:

function toggle_check(check) {
      if (check.value=="on") {
        check.value="off";
      }
      else {
        check.value="on";
      }
    }

Вот мой Python:

@app.route("/settings", methods=["POST", "GET"])
def load_settings():
    if request.method == "POST":
        settings = list(request.form.values())
        print(settings)
    return render_template("settings.html")

Если я оставлю текстовые поля пустыми, но поставлю флажок, вот что будет напечатано: [..., '', 'on']

Теперь, если я оставлю флажок пустым, это то, что будет напечатано: [..., ''].По какой-то причине это не добавляет значения флажка ...

Я не знаю, как это исправить.Может ли кто-нибудь помочь, пожалуйста?

Спасибо.

1 Ответ

0 голосов
/ 03 марта 2019

Кража из этого ответа , рекомендация HTML 4 от W3C гласит:

Флажки (и переключатели) являются переключателями включения / выключения, которые могутбыть переключенным пользователем.Переключатель включен, когда установлен атрибут проверяемого элемента управления.Когда форма отправлена, только «включенные» элементы управления флажка могут стать успешными.

Таким образом, это не имеет ничего общего с Flask в отношении того, почему значение флажка не существует, когда не отмечено.Браузер не будет сериализовать эту форму ввода в запрос, когда флажок снят.

Что вы могли бы сделать, это дать вводу некоторое разумное значение в шаблоне:

<input type="checkbox" name="d_enabled" value="on">

А затем в вашем обработчике Flask проверьте наличие значения:

if request.form.get('d_enabled') == 'on':
    # checkbox is checked
else:
    # checkbox is not checked
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...