Python CherryPy:“error\u page.default”和“error\u page.404”配置设置之间有什么区别?

Python CherryPy:“error\u page.default”和“error\u page.404”配置设置之间有什么区别?,python,cherrypy,Python,Cherrypy,假设我想显示自己的404&500页,到目前为止,我发现了两种可能性: 1:使用cherrypy.config.update def error\u page\u 404(状态、消息、回溯、版本): 返回('找不到404页错误') def错误页面(状态、消息、回溯、版本): 返回('错误:') cherrypy.config.update({'error_page.404':error_page_404,'error_page.500':error_page_500}) 使用\u cp\u co

假设我想显示自己的404&500页,到目前为止,我发现了两种可能性:

1:使用
cherrypy.config.update

def error\u page\u 404(状态、消息、回溯、版本):
返回('找不到404页错误')
def错误页面(状态、消息、回溯、版本):
返回('错误:')
cherrypy.config.update({'error_page.404':error_page_404,'error_page.500':error_page_500})
  • 使用
    \u cp\u config
  • 来自cherrypy导入的
    错误
    def句柄_错误():
    cherrypy.response.status=500
    log(“handle_error()called.Alarm!”,“WEBAPP”)
    cherrypy.response.body=['抱歉,发生了一个错误。已通知管理员']
    错误=\u cperror.format\u exc()
    def错误页面(状态、消息、回溯、版本):
    log(“调用了error_page()。可能不太重要。”,“WEBAPP”)
    return“抱歉,发生了错误。”
    类根:
    _cp_config={
    “error\u page.default”:error\u page,
    'request.error\u response':处理\u错误
    } 
    

    但是有什么区别或建议更适合使用吗?

    请求。错误\u响应
    允许您设置处理程序来处理某些意外错误,例如您自己从HTTP处理程序引发的异常。 您将为此选项设置的可调用项将不会收到任何参数,您必须检查详细信息,以了解发生了什么。 您还必须自己在错误处理程序中显式地设置
    cherrypy.response.status
    cherrypy.response.body


    如果要修改HTTP错误代码的错误响应(当出现
    cherrypy.HTTPError
    实例时,如
    raise cherrypy.NotFound
    ),可以使用
    error\u page.default
    (全部捕获)或
    error\u page.404
    (特定于错误的)来处理这些错误。
    error\u页面
    选项支持文件路径和可调用值。在使用文件路径的情况下,HTML模板文件可以使用以下替换模式:
    %(状态)s
    %(消息)s
    %(回溯)s
    ,和
    %(版本)s
    。 如果您选择使用一个函数,它将接收这些参数(
    回调(状态、消息、回溯、版本)
    )。然后使用此可调用的返回值作为HTTP响应负载

    正如您所看到的,这些方法具有不同的含义以及不同级别的灵活性和可用性。选择适合你的。在内部,默认的
    request.error\u response
    使用
    error\u页面
    设置来确定返回的内容。因此,如果您重新定义
    请求.error\u响应
    ,它将不会使用
    错误页面。*
    设置,除非您明确要求它这样做


    请参阅。

    error\u页。默认值是一个包罗万象的值,如果错误代码没有自己的处理程序,就会使用它。老实说,我不太理解这个问题的动机。@webKnjaZ,我有两个选择,他们似乎做了类似的事情——我的动机是理解根本区别是什么,以及处理它的标准方式是什么。这毕竟是一个学习和提问的平台,所以尽管这可能是一个愚蠢的问题,但我认为这是有目的的。见下面我的答案。