Python Cherrypy 404 错误处理
我有一个网页服务器,所有的设置都是在代码里完成的,但我想处理所有的404错误页面。请问我该如何在Python中实现这个功能呢?
3 个回答
0
预期的HTTP响应
在配置中,可以使用'error_page'这个选项来为一些常见的错误响应(比如404未找到)提供自定义的HTML输出。你只需要提供一个文件名,系统会从这个文件中读取内容。文件里的内容会用一些特定的值来替换,比如%(status)s、%(message)s、%(traceback)s和%(version)s,这些都是用简单的Python字符串格式化方式来处理的。string formatting <http://www.python.org/doc/2.6.4/library/stdtypes.html#string-formatting-operations>
_。
::
_cp_config = {'error_page.404': os.path.join(localDir, "static/index.html")}
从3.1版本开始,你还可以提供一个函数或者其他可调用的对象作为error_page的入口。这个函数会接收到和模板中一样的状态、消息、追踪信息和版本参数。
def error_page_402(status, message, traceback, version):
return "Error %s - Well, I'm very sorry but you haven't paid!" % status
cherrypy.config.update({'error_page.402': error_page_402})
在3.1版本中,除了可以处理编号的错误代码外,你还可以提供"error_page.default",这样就能处理所有没有自己专门error_page的错误代码。
9
如果你想了解更传统的4xx和5xx错误输出的替代方案,可以查看这个链接:http://www.cherrypy.org/wiki/ErrorsAndExceptions#AnticipatedHTTPresponses。
6
在根目录下创建一个默认处理器。
class Root:
def index(self):
return "Hello!"
index.exposed = True
def default(self, attr='abc'):
return "Page not Found!"
default.exposed = True