2012-10-07 2 views

ответ

19

Вы можете использовать Blueprint.app_errorhandler метод, как это приложение:

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

Даже с этим на месте 'abort (404)' в представлениях схемы будет обрабатываться обработчиком ошибок приложения, а не этим. Для получения дополнительной информации см. [Flask doc] (http://flask.pocoo.org/docs/0.10/api/#flask.Blueprint.errorhandler). – Devi

+1

Flask действительно сосет bigtime в этом – TjerkW

+0

is app_errorhandler устарел? – user805981

1

Настой doesnt support blueprint level error handlers for 404 and 500 errors , BluePrint - это нечеткая абстракция. Лучше использовать для этого новое приложение WSGI, если вам нужны отдельные обработчики ошибок, это имеет больший смысл.

Также я бы рекомендовал не использовать колбу, она использует глобальные переменные по всем местам, что затрудняет управление вашим кодом, если он становится больше.

+2

downvoted, потому что рекомендация колбы очень субъективна и не имеет никакого отношения к заданному вопросу – iScrE4m

3

Я тоже не мог получить наивысший рейтинг ответа на работу, но вот обходной путь.

Вы можете использовать все на конце конец вашего Blueprint, не уверен, насколько он надежный/рекомендованный, но он действительно работает. Вы также можете добавлять разные сообщения об ошибках для разных методов.

@blueprint.route('/<path:path>') 
def page_not_found(path): 
    return "Custom failure message" 
Смежные вопросы