为什么这个cherrypy应用程序不使用“expose”装饰器?

2024-06-17 12:34:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我之前了解到,在cherrypy中,必须公开一个方法才能使其成为视图目标,这一点也遍布整个文档:

  import cherrypy
  @cherrypy.expose
  def index():
    return "hello world"

但是我继承了一个cherrypy应用程序,它似乎没有暴露任何东西

这是怎么回事?是否从新版本中删除了公开要求?在

在谷歌上搜索这个并不容易,我在cherrypy上找到了很多关于暴露和装饰的信息,但没有关于“cherrypy without expose”的内容

这是主要的服务.py脚本,为了简洁起见,我从中删除了一些部分:

^{pr2}$

而且应用程序中没有Expose。它怎么能起作用?在

文件根.py公司名称:

# -*- coding: utf-8 -*-

from mako.template import Template

class RouteRoot:

  def index(self):
    return "Hello world!"

Tags: 方法文档pyimport视图应用程序hello目标
3条回答

这是因为应用程序不使用默认的调度程序。它被解释了(粗体!)在cherrypy的文件里

我读过这一页:http://docs.cherrypy.org/stable/concepts/dispatching.html

我不确定,但也许派遣代替了曝光的必要性。在

因为它依赖于routes dispatcher,后者的工作方式略有不同。主要地,它不需要expose修饰符设置的exposed属性,因为url是显式描述的(正如您在connect(...)方法中看到的那样)。另一方面,默认的CherryPy调度程序不提供url和对象之间的显式映射。当一个请求命中应用程序的引擎时,它必须经过您最初安装的应用程序的树。它使用exposed属性来确定方法是否可以参与URL映射。这为开发人员提供了一个在控制器类中编写URL映射过程无法访问的方法的机会。在

相关问题 更多 >