2012-01-17 3 views
10

パラメータを送信するフォームがあります。 私のフォームにはチェックボックスがあります。 私のチェックボックスがチェックされていない場合、私はパラメータを取得しません。FLASKに存在しないパラメータの例外

私のモジュールに私が持っている場合:

var = request.form['mycheckbox'] 

を、私のチェックボックスがデバッグモードで次に(パラメータが渡されていない)

をチェックされていない場合、私は、エラーメッセージが表示されます。

不正リクエストブラウザ(またはプロキシ)が、このサーバ が理解できなかった要求を送信しました。

エラーの内容については何も教えてくれません。

私が使用して例外を防ぐ:

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

しかし、私はフラスコ、この場合の処理​​方法の動作を変更することはできませんか?

答えて

8

この理由は、ここにフラスコのマニュアルに隠されている:私は、この動作モードをデバッグするために変更されていない理由はわからないんだけど、WERKZEUGからBadRequestKeyErrorの例外をキャッチするためにフラスコを取得するためにhttp://flask.pocoo.org/docs/api/#flask.Flask.trap_http_exception

、あなたアプリケーションオブジェクトで次のようなものを実行する必要があります。

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

私はhttps://github.com/mitsuhiko/flask/issues/382を書いて、デバッグが有効になっているときにこれをデフォルトにすることができるかどうかを確認しました。 –

+0

私は本当に残念なことに、フラスコがなぜ私に話したくないのか、私はそんなに愛を示しているのでは困惑していました。チケットとあなたの答えを開いてくれてありがとう – codyc4321

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

パラメータが定義されていない場合、これはNoneを返します。

+0

remember = form.rememberme.dataを使用して、それを解決!ありがとう – leotesta

0

単一ブール値フィールドの検証中に同様の問題が発生しました。

私の代わりにそれだrequest.form['remember_me']

関連する問題