Ошибка 'KeyError: None' при попытке использовать обработчик ошибок клиента - Flask - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть следующее:

def handle_error_404(error):
    flash('Server says: {0}'.format(error), 'error')
    return render_template('404.html', selected_menu_item=None)


def handle_error_500(error):
    flash('Server says: {0}'.format(error), 'error')
    return render_template('500.html', selected_menu_item=None)


def init_error_handlers(app):
    if app:
        app.error_handler_spec[None][404] = handle_error_404
        app.error_handler_spec[None][500] = handle_error_500

Я следовал учебному пособию о том, как использовать клиентские обработчики ошибок, но я не могу найти способ обойти эту ошибку. Как я могу обойти это?

1 Ответ

0 голосов
/ 18 ноября 2018

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

def handle_error_404(error):
    flash('Server says: {0}'.format(error), 'error')
    return render_template('404.html', selected_menu_item=None)


def handle_error_500(error):
    flash('Server says: {0}'.format(error), 'error')
    return render_template('500.html', selected_menu_item=None)


def init_error_handlers(app):
    if app:
        app.errorhandler(404)(handle_error_404)
        app.errorhandler(500)(handle_error_500)

В качестве альтернативы:

def init_error_handlers(app):
    if app:
        @app.errorhandler(404)
        def handle_error_404(error):
            flash('Server says: {0}'.format(error), 'error')
            return render_template('404.html', selected_menu_item=None)

        @app.errorhandler(500)
        def handle_error_500(error):
            flash('Server says: {0}'.format(error), 'error')
            return render_template('500.html', selected_menu_item=None)
...