исключение для несуществующего параметра в FLASK - PullRequest
10 голосов
/ 17 января 2012

У меня есть форма, которая отправляет параметры.В моей форме у меня есть флажок.Если мой флажок не установлен, то я не получу никаких параметров.

Если в моем модуле у меня есть:

var = request.form['mycheckbox']

и если мой флажок не установлен (параметр не передан)

Затем в режиме отладки я получаю сообщение об ошибке:

Плохой запрос Браузер (или прокси-сервер) отправил запрос, который этот сервер не может понять.

Ничто не говорит мне о том, что ошибка.

Я предотвратил исключение, используя:

    try:
        var=request.form['checkbox']
    except:
        var=None

Но не могу ли я изменить поведение того, как Flask обрабатывает этот случай?

Ответы [ 3 ]

15 голосов
/ 17 января 2012
var = request.form.get('checkbox')

Это вернет None, если параметр не определен.

8 голосов
/ 17 января 2012

Причина этого скрыта в документации колбы здесь: http://flask.pocoo.org/docs/api/#flask.Flask.trap_http_exception

Я не уверен, почему это поведение не изменилось для режима отладки, но чтобы Flask перехватывал исключения BadRequestKeyError из werkzeug, вам нужно запустить что-то подобное в объекте приложения:

app.config['TRAP_BAD_REQUEST_ERRORS'] = True
0 голосов
/ 03 ноября 2016

У меня была похожая проблема при проверке одного логического поля.

Я решил, используя remember = form.rememberme.data вместо request.form['remember_me']

...