尝试使用客户错误处理程序时出现“ KeyError:无”错误-Flask

时间:2018-11-17 21:53:27

标签: python flask error-handling

我有以下内容:

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 :(得分:0)

flask docs说您应该使用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)