【问题标题】:Subpages and Routing in CherrypyCherrypy 中的子页面和路由
【发布时间】:2020-01-10 23:04:45
【问题描述】:

最近开始使用 CherryPy,但我很难创建子页面。

我想要的结构是一个根页面/,一个概述页面/resources,然后是单个资源页面/resources/my_resource。我可能会有其他页面/my_page 和也许/my_page/my_page2

我首先尝试使用“主页”页面类来处理顶级页面,并使用带有 cherrypy.popargs 装饰的“资源”类来处理资源页面。

我按如下方式启动 CherryPy:

cherrypy.tree.mount(Home(), '/', home_conf)
cherrypy.tree.mount(Resource(), '/resource/', resource_conf)
cherrypy.engine.start()
cherrypy.engine.block()

这用单独的资源页面替换了/resource/ 页面。即他们在/my_resource/而不是/resource/my_resource提供服务

我相信我可以使用cp_dispatch 方法解决这个问题,但是以不同的方式处理不同的网址似乎很笨拙。有没有更好的方法来处理具有变量或静态结构的子页面?

【问题讨论】:

    标签: python cherrypy


    【解决方案1】:

    遇到了一个答案。 cp_dispatch 可以工作,但是 CherryPy 中有一个结构可以满足我们的需求。

    ROUTES = cherrypy.dispatch.RoutesDispatcher()
    
    
    ROUTES.connect(name='home', route="/my_route",
                   controller=MyController(), action='index',
                   conditions=dict(method=["GET"]))
    

    然后我们只需要将密钥对 '/': {'request.dispatch': ROUTES} 添加到我们发送 CherryPy 的配置中。

    控制器参数应指向拥有返回所需内容的函数的任何容器类。 action 参数是那个函数,它应该有常规的 CherryPy 装饰器。

    编辑 另外值得注意的是,我认为这需要 routes 包,不包括或不依赖于 CherryPy。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 2020-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多