CherryPy的重定向的实现

时间:2015-07-01 01:28:18

标签: python cherrypy http-redirect

为什么CherryPy 3.x中的请求重定向是使用raise实现的,而不是return实现的?重定向操作可能如下所示:

raise cherrypy.HTTPRedirect('/index')

raise发生时CherryPy会做什么?为什么不回来?

1 个答案:

答案 0 :(得分:1)

嗯,基本上它是一个实现细节。通常你从CherryPy处理程序返回:

  • strunicodebytes或其中的可迭代
  • 类似文件的对象
  • 流内容生成器

所有这些对象最终都成为一个响应体。重定向(3xx HTTP代码)和错误(cherrypy.HTTPError,4xx和5xx HTTP代码)要么没有正文,要么正文设置在处理程序之外(自定义错误页面的默认值)。所以以这种方式区分它们是有道理的。

另请注意,在Python中,异常也是正常流程的一部分,例如: StopIteration