2012-01-17 15 views
10

Tengo un formulario que envía parámetros. En mi formulario tengo una casilla de verificación. Si mi casilla de verificación no está marcada, no obtendré ningún parámetro.excepción para el parámetro no existente en FLASK

Si en mi módulo que tengo:

var = request.form['mycheckbox'] 

y si mi casilla de verificación no está activada (el parámetro no se pasa)

Luego, en el modo de depuración me sale el mensaje de error:

Solicitud incorrecta El navegador (o proxy) envió una solicitud que este servidor no pudo entender.

Nada me dice cuál es el error.

Anticipéme la excepción mediante el uso de:

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

Pero no me puede cambiar el comportamiento de la forma del frasco maneja este caso?

Respuesta

8

La razón de esto se oculta en la documentación frasco aquí: http://flask.pocoo.org/docs/api/#flask.Flask.trap_http_exception

No estoy seguro de por qué este comportamiento no se cambia para el modo de depuración, pero para conseguir Matraz para atrapar las excepciones BadRequestKeyError de werkzeug, se necesita ejecutar algo como esto en su objeto de aplicación:

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

Archivé https://github.com/mitsuhiko/flask/issues/382 para ver si esto se puede hacer de forma predeterminada cuando se habilita la depuración. –

+0

Debo decir que este es un comportamiento realmente decepcionante que me desconcertó por qué el matraz no quería hablar conmigo, cuando le estoy mostrando tanto amor. Gracias por abrir el ticket y tu respuesta – codyc4321

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

Esto devolverá None si no se define el parámetro.

+0

Eso es todo! Gracias – leotesta

0

Tuve un problema similar durante la validación del campo booleano individual.

Lo resuelto mediante el uso de remember = form.rememberme.data en lugar de request.form['remember_me']

Cuestiones relacionadas