Python Cherrypy 404 错误处理

5 投票
3 回答
8491 浏览
提问于 2025-04-15 17:47

我有一个网页服务器,所有的设置都是在代码里完成的,但我想处理所有的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

撰写回答