Python CherryPy:“error\u page.default”和“error\u page.404”配置设置之间有什么区别?
假设我想显示自己的404&500页,到目前为止,我发现了两种可能性: 1:使用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
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
:错误
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,我有两个选择,他们似乎做了类似的事情——我的动机是理解根本区别是什么,以及处理它的标准方式是什么。这毕竟是一个学习和提问的平台,所以尽管这可能是一个愚蠢的问题,但我认为这是有目的的。见下面我的答案。