2012-10-07 15 views

Odpowiedz

19

Można użyć Blueprint.app_errorhandler metodę tak:

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

Nawet przy tym miejscu na miejscu, 'abort (404)' w widokach planu byłby obsługiwany przez program obsługi błędów aplikacji, a nie to. Aby uzyskać więcej informacji, patrz [Flask doc] (http://flask.pocoo.org/docs/0.10/api/#flask.Blueprint.errorhandler). – Devi

+1

Flask rzeczywiście jest do bani w tym – TjerkW

+0

jest przestarzały app_errorhandler? – user805981

1

Kolby doesnt support blueprint level error handlers for 404 and 500 errors . BluePrint to nieszczelna abstrakcja. Lepiej jest użyć do tego nowej aplikacji WSGI, jeśli potrzebujesz osobnych procedur obsługi błędów, to ma więcej sensu.

Polecam także, aby nie używać kolby, używa globali w różnych miejscach, co sprawia, że ​​kod jest trudny do zarządzania, jeśli powiększy się.

+2

przegłosowano, ponieważ zalecenie dotyczące kolby jest bardzo subiektywne i nie ma nic wspólnego z pytaniem – iScrE4m

3

Ja też nie mogłem uzyskać odpowiedzi najwyżej ocenionej, ale działa to w sposób obejście tego problemu.

Możesz użyć catch-all na koniec swojego Blueprint, nie wiesz, jak solidne/zalecane jest, ale to działa. Można również dodać różne komunikaty o błędach dla różnych metod.

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