4

假设我有一些代码(使用 CherryPy),如下所示:

import cherrypy

class Names:
    def index(self, name=None):
        return "Names.index:  " + str(name)
    index.exposed = True

class Root:
    def index(self):
        return "This is the root"
    index.exposed = True

if __name__ == "__main__":
    root = Root()

    root.names = Names()

    cherrypy.tree.mount(root, '/')
    cherrypy.engine.start()
    cherrypy.engine.block()

如果我点击网址http://localhost:8080/names/,我会看到Names.index: None,这很好。这意味着 Names() 类正在被调用。

但是,如果我去http://localhost:8080/names/mark,我会得到一个 404 错误,而不是我期待的Names.index: 标记

这让我很困惑,因为根据PageHandler文档:

当一个请求被处理时,URI 被分成它的组件,并且每个组件都按顺序与树中的节点匹配。任何尾随组件都是“虚拟路径”组件,并作为位置参数传递。

现在假设我将 Names() 类更改为如下所示:

class Names:
    def index(self, name=None):
        return "Names.index:  " + str(name)
    index.exposed = True

    def name(self, name=None):
        return "Names.name:  " + str(name)
    name.exposed = True

现在我可以访问http://localhost:8080/names/name/mark并看到Names.name: mark

有人可以解释这里发生了什么吗?

4

1 回答 1

3

index方法是部分匹配规则的一个例外。您可以改用默认方法,或者在此特定示例中将名称命名为方法本身。

于 2009-07-02T21:48:47.703 回答