handling error codes http-status-code-404 blueprint flask

http status code 404 - codes - matraz: error_handler para planos



flask return status 200 (4)

¿Se puede configurar error_handler para un plano?

@blueprint.errorhandler(404) def page_not_found(error): return ''This page does not exist'', 404

editar:

https://github.com/mitsuhiko/flask/blob/18413ed1bf08261acf6d40f8ba65a98ae586bb29/flask/blueprints.py

puede especificar una aplicación amplia y un blueprint local error_handler


Flask no admite controladores de errores de nivel de proyecto para errores 404 y 500 . Un BluePrint es una abstracción con fugas. Es mejor usar una nueva aplicación WSGI para esto, si necesita controladores de errores separados, esto tiene más sentido.

También recomendaría no usar el matraz, ya que usa globos globales en todos los lugares, lo que hace que su código sea difícil de administrar si crece.


Puedes usar el método Blueprint.app_errorhandler esta manera:

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


Yo tampoco pude conseguir que funcionara la mejor respuesta, pero aquí hay una solución.

Puede usar un catch-all al final de su Blueprint, sin estar seguro de qué tan robusto / recomendado es, pero funciona. También puede agregar diferentes mensajes de error para diferentes métodos.

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


agregue el manejo de errores en el nivel de aplicación usando el objeto proxy de solicitud:

from flask import request,jsonify @app.errorhandler(404) @app.errorhandler(405) def _handle_api_error(ex): if request.path.startswith(''/api/''): return jsonify(ex) else: return ex

Documentación matraz