代码之家  ›  专栏  ›  技术社区  ›  Mark Biek

帮助我更好地理解Cherrypy页面处理程序

  •  4
  • Mark Biek  · 技术社区  · 17 年前

    假设我有一些代码(使用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/ 我明白了 name.index:无 很好。这意味着正在调用name()类。

    但是,如果我去 http://localhost:8080/names/mark ,我得到一个404错误而不是 名称.索引:标记 我在等你。

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

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

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

    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 我明白了 姓名.姓名:马克 .

    有人能解释一下这里发生了什么吗?

    1 回复  |  直到 17 年前