Невозможно установить значение по умолчанию для данных формы в Flask - PullRequest
0 голосов
/ 15 января 2020

У меня есть маршрут Flask, определенный следующим образом:

@app.route('/test/', methods=['POST'])
def test():
    number = request.form.get('my_number', 555) # number == ''
    return str(number)

Если я сделаю запрос POST на /test/ с my_number пустым / отсутствующим, я ожидаю локальную переменную number быть установленным на 555 (по умолчанию). Вместо этого number - это пустая строка ''.

Единственный способ получить значение по умолчанию (number == 555) - это использовать or следующим образом:

@app.route('/test/', methods=['POST'])
def test():
    number = request.form.get('my_number') or 555 # number == 555
    return str(number)

Есть идеи, что не так?

1 Ответ

3 голосов
/ 15 января 2020

Проблема в том, что для вашего ввода request.form.get('number') всегда получает пустую строку. Поскольку есть что-то, что нужно извлечь, оно никогда не использует значение по умолчанию, даже если вы передадите его в качестве второго параметра.

or, однако, обрабатывает '' как false, поэтому он выберет 555. (см. «Использование или с общими объектами» https://realpython.com/python-or-operator/)

Это означает, что всякий раз, когда вы обращаетесь к этому URL, форма, которую вы публикуете, имеет запись для «номера».

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