为什么CherryPy 3.x中的请求重定向是使用raise
实现的,而不是return
实现的?重定向操作可能如下所示:
raise cherrypy.HTTPRedirect('/index')
当raise
发生时CherryPy会做什么?为什么不回来?
答案 0 :(得分:1)
嗯,基本上它是一个实现细节。通常你从CherryPy处理程序返回:
str
,unicode
,bytes
或其中的可迭代所有这些对象最终都成为一个响应体。重定向(3xx HTTP代码)和错误(cherrypy.HTTPError
,4xx和5xx HTTP代码)要么没有正文,要么正文设置在处理程序之外(自定义错误页面的默认值)。所以以这种方式区分它们是有道理的。
另请注意,在Python中,异常也是正常流程的一部分,例如: StopIteration
。