10

我有一个发送参数的表单。在我的表格中,我有一个复选框。如果我的复选框没有被选中,那么我将不会得到任何参数。

如果在我的模块中我有:

var = request.form['mycheckbox']

如果我的复选框没有被选中(参数没有通过)

然后在调试模式下我收到错误消息:

错误请求 浏览器(或代理)发送了此服务器无法理解的请求。

没有什么能告诉我错误是什么。

我通过使用防止了异常:

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

但是我不能改变 Flask 处理这种情况的行为吗?

4

3 回答 3

15
var = request.form.get('checkbox')

None如果未定义参数,这将返回。

于 2012-01-17T14:44:05.720 回答
8

其原因隐藏在此处的烧瓶文档中:http: //flask.pocoo.org/docs/api/#flask.Flask.trap_http_exception

我不确定为什么调试模式没有改变这种行为,但是为了让 Flask 从 werkzeug 捕获 BadRequestKeyError 异常,你需要在你的应用程序对象上运行这样的东西:

app.config['TRAP_BAD_REQUEST_ERRORS'] = True
于 2012-01-17T14:57:13.567 回答
0

在验证单个布尔字段时我遇到了类似的问题。

我通过使用remember = form.rememberme.data而不是解决了它request.form['remember_me']

于 2016-11-03T18:42:56.137 回答