假设我有一些代码(使用 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。
有人可以解释这里发生了什么吗?