简体   繁体   English

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

[英]Getting 'KeyError: None' error when trying to use customer errorhandler - Flask

I have the following: 我有以下几点:

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

I was following a tutorial on how to use customer error handlers, but I can't seem to find a way around this error. 我正在遵循有关如何使用客户错误处理程序的教程,但似乎找不到解决此错误的方法。 How can I get around this? 我该如何解决?

The flask docs say you should register an error handler using the errorhandler decorator. errorhandler 文档说您应该使用errorhandler装饰器注册一个错误处理程序。 An example using your code: 使用您的代码的示例:

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)

Alternatively: 或者:

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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM