Ya hemos visto en un artículo cómo podemos manejar las páginas de error en Flask. Si bien, lo que veíamos era cómo generar páginas de error estándares. En este caso vamos a ver cómo podemos personalizar errores en Flask.
Para gestionar el error vamos a utilizar el método abort()
, al cual le pasaremos el código del error a devolver.
@app.route('/bloqueado')
def bloqueado():
return abort(401)
Hasta aquí todo correcto, ya que tendremos la página estándar del error 401 como respuesta a llamar a la ruta /bloqueado.
Para poder personalizar errores en Flask deberemos de utilizar una anotación con un errorhandler()
al cual indicaremos el código de error que estamos gestionando.
@app.errorhandler(401)
El método que asignemos como controlador recibirá un objeto error como parámetro:
@app.errorhandler(401)
def access_error(error):
Y el contenido a devolver ya depende de lo que queramos hacer. Si bien lo más habitual será devolver una plantilla mediante el método render_template()
.
Lo que no se nos tiene que olvidar es que en la respuesta deberemos de indicar nuevamente el código de error, para que este sea devuelto al cliente.
@app.errorhandler(401)
def access_error(error):
return render_template('error_401.html'), 401
Así ya hemos visto lo sencillo que es personalizar errores en Flask mediante anotaciones.