【问题标题】:Getting 'KeyError: None' error when trying to use customer errorhandler - Flask尝试使用客户错误处理程序时出现“KeyError:None”错误 - Flask
【发布时间】:2018-11-17 21:53:26
【问题描述】:

我有以下:

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

我正在关注如何使用客户错误处理程序的教程,但我似乎无法找到解决此错误的方法。我该如何解决这个问题?

【问题讨论】:

    标签: python flask error-handling


    【解决方案1】:

    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)
    

    【讨论】:

      猜你喜欢
      • 2019-07-06
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      • 2018-01-15
      • 1970-01-01
      • 2017-08-27
      • 1970-01-01
      • 2021-10-30
      相关资源
      最近更新 更多