2012-01-17 24 views
10

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

如果我的模块中我有:

var = request.form['mycheckbox'] 

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

然后在调试模式下,我得到错误信息:

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

没有告诉我什么是错误。

我使用防止异常:

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

但我不能改变的瓶如何处理这种情况下的行为?

回答

8

这样做的原因是隐藏在烧瓶文档在这里:http://flask.pocoo.org/docs/api/#flask.Flask.trap_http_exception

我不知道为什么这种行为是不是为了调试模式改变,但要获得瓶赶上从WERKZEUG的BadRequestKeyError异常,需要在你的应用程序对象上运行如下代码:

app.config['TRAP_BAD_REQUEST_ERRORS'] = True 
+1

我提交了https://github.com/mitsuhiko/flask/issues/382,看看是否可以在启用调试时将其设为默认值。 – 2012-01-17 15:02:54

+0

我必须说,这真令人失望,这让我感到困惑,因为当我向他展示这么多的爱时,酒瓶不想和我说话。感谢您打开票和您的答案 – codyc4321 2016-05-02 20:32:41

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

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

+0

这就是它!谢谢 – leotesta 2015-03-28 04:27:29

0

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

我解决它通过使用remember = form.rememberme.data代替request.form['remember_me']