假设我要显示自己的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
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
但是有什么区别或建议更可取吗?
答案 0 :(得分:1)
request.error_response
允许您设置一个处理程序来处理一些意外错误,例如您自己从HTTP处理程序引发的异常。
您将为此选项设置的可调用对象将完全不接收任何参数,并且您必须检查sys.exc_info()
的详细信息,以了解发生了什么。
您还必须在错误处理程序中明确设置cherrypy.response.status
和cherrypy.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
设置。