【发布时间】:2010-01-08 08:50:55
【问题描述】:
我有一个在代码中设置了所有配置的 Web 服务器,但我希望能够处理所有页面 404 错误。我将如何在 Python 中执行此操作?
【问题讨论】:
-
请更具体并更详细地描述您的系统。
我有一个在代码中设置了所有配置的 Web 服务器,但我希望能够处理所有页面 404 错误。我将如何在 Python 中执行此操作?
【问题讨论】:
如果您想要更传统地替换 4xx 和 5xx 输出,另请参阅 http://www.cherrypy.org/wiki/ErrorsAndExceptions#AnticipatedHTTPresponses。
【讨论】:
在根目录中创建一个默认处理程序。
class Root:
def index(self):
return "Hello!"
index.exposed = True
def default(self, attr='abc'):
return "Page not Found!"
default.exposed = True
【讨论】:
“error_page”配置命名空间可用于提供自定义 HTML 输出
预期响应(如 404 Not Found)。提供输出的文件名
将被阅读。内容将使用值 %(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条目的代码
【讨论】: