CherryPy:“ error_page.default”配置与“ error_page.404”配置设置有什么区别?

时间:2019-08-09 20:47:42

标签: python cherrypy

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

1:使用from mailer import Mailer from mailer import Message message = Message(From="me@example.com", To="you@example.com") message.Subject = "An HTML Email" message.Html = """<p>Hi!<br> How are you?<br></p>""" sender = Mailer('smtp.example.com') sender.send(message)

cherrypy.config.update
  1. 使用def error_page_404(status, message, traceback, version): return ('Error 404 Page not found') def error_page_500(status, message, traceback, version): return ('Error:') cherrypy.config.update({'error_page.404': error_page_404, 'error_page.500': error_page_500})
_cp_config

但是有什么区别或建议更可取吗?

1 个答案:

答案 0 :(得分:1)

request.error_response允许您设置一个处理程序来处理一些意外错误,例如您自己从HTTP处理程序引发的异常。 您将为此选项设置的可调用对象将完全不接收任何参数,并且您必须检查sys.exc_info()的详细信息,以了解发生了什么。 您还必须在错误处理程序中明确设置cherrypy.response.statuscherrypy.response.body

如果您要修改HTTP错误代码的错误响应(引发cherrypy.HTTPError的实例,例如raise cherrypy.NotFound时),则可以使用error_page.default(全部捕获)或{ {1}}(特定于错误),用于处理这些错误。 error_page.404选项支持文件路径和可调用值。如果使用文件路径,则HTML模板文件可以使用以下替换模式:error_page%(status)s%(message)s%(traceback)s。 如果您选择使用函数,它将接收那些作为参数(%(version)s)。然后,该可调用的返回值将用于HTTP响应有效负载。

如您所见,这些方法具有不同的含义以及不同程度的灵活性和可用性。选择任何适合您的方法。在内部,默认的callback(status, message, traceback, version)使用request.error_response设置来确定要返回的内容。因此,如果您重新定义error_page,除非您明确进行设置,否则它将不会使用request.error_response设置。

请参见the docstring with some explanation here

相关问题