我有一个发送参数的表单。 在我的表格中,我有一个复选框。 如果我的复选框未被选中,那么我将不会获得任何参数。
如果在我的模块中我有:
var = request.form['mycheckbox']
如果未勾选我的复选框(参数未通过)
然后在调试模式下,我收到错误消息:
错误请求浏览器(或代理)发送了此服务器的请求 无法理解。
没有什么能告诉我这个错误是什么。
我使用:
阻止了异常 try:
var=request.form['checkbox']
except:
var=None
但我不能改变Flask如何处理这种情况的行为吗?
答案 0 :(得分:15)
var = request.form.get('checkbox')
如果未定义参数,则返回None
。
答案 1 :(得分:8)
这里的原因隐藏在烧瓶文档中:http://flask.pocoo.org/docs/api/#flask.Flask.trap_http_exception
我不确定为什么调试模式没有改变这种行为,但要让Flask从werkzeug捕获BadRequestKeyError异常,你需要在你的应用程序对象上运行类似的东西:
app.config['TRAP_BAD_REQUEST_ERRORS'] = True
答案 2 :(得分:0)
我在验证单个布尔字段时遇到了类似的问题。
我使用remember = form.rememberme.data
代替request.form['remember_me']