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

raise cherrypy.HTTPRedirect('/index')


raise出现时,CherryPy会做什么?为什么不回来?

最佳答案

好吧,基本上这是一个实现细节。通常,您从CherryPy处理程序返回:


strunicodebytes或可迭代
类文件对象
流内容生成器


所有这些对象最终成为响应主体。重定向(3xx HTTP代码)和错误(cherrypy.HTTPError,4xx和5xx HTTP代码)没有任何正文,或者该正文设置在处理程序之外(默认的自定义错误页面)。因此,以这种方式区分它们很有意义。

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

关于python - CherryPy重定向的实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31151166/

10-16 06:59