2012-10-07 43 views

Respuesta

19

Puede utilizar Blueprint.app_errorhandler método como este:

bp = Blueprint('errors', __name__) 

@bp.app_errorhandler(404) 
def handle_404(err): 
    return render_template('404.html'), 404 

@bp.app_errorhandler(500) 
def handle_500(err): 
    return render_template('500.html'), 500 
+3

Incluso con esto en su lugar, 'abort (404)' en las vistas del plano se manejaría mediante el manejador de errores de la aplicación y no esto. Consulte [Flask doc] (http://flask.pocoo.org/docs/0.10/api/#flask.Blueprint.errorhandler) para obtener más información. – Devi

+1

Frasco realmente apesta bigtime en este – TjerkW

+0

¿está desaconsejado app_errorhandler? – user805981

1

Frasco doesnt support blueprint level error handlers for 404 and 500 errors . Un BluePrint es una abstracción con fugas. Es mejor usar una nueva aplicación WSGI para esto, si necesita manejadores de errores por separado, esto tiene más sentido.

También recomendaría no utilizar matraz, utiliza globales en todos los lugares, lo que hace que su código sea difícil de manejar si crece más.

+2

downvoted, porque la recomendación del matraz es muy subjetiva y no tiene nada que ver con la pregunta formulada – iScrE4m

3

Yo tampoco pude obtener la respuesta mejor valorada para trabajar, pero aquí hay una solución.

Puede utilizar un catch-all en el extremo de su Blueprint, no estoy seguro de qué tan robusto/recomendado es, pero funciona. También podría agregar diferentes mensajes de error para diferentes métodos también.

@blueprint.route('/<path:path>') 
def page_not_found(path): 
    return "Custom failure message" 
Cuestiones relacionadas