FLASK中非现有参数的异常

gpa*_*sse 10 python werkzeug flask

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

如果在我的模块中我有:

var = request.form['mycheckbox']
Run Code Online (Sandbox Code Playgroud)

并且如果未选中我的复选框(参数未通过)

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

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

什么都没告诉我错误是什么.

我使用以下方法阻止了异常:

    try:
        var=request.form['checkbox']
    except:
        var=None
Run Code Online (Sandbox Code Playgroud)

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

Fog*_*ird 15

var = request.form.get('checkbox')
Run Code Online (Sandbox Code Playgroud)

None如果未定义参数,则返回此选项.


Chr*_*Lee 8

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

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

app.config['TRAP_BAD_REQUEST_ERRORS'] = True
Run Code Online (Sandbox Code Playgroud)