在CherryPy中使用映射

时间:2012-06-21 16:30:22

标签: python cherrypy

在CherryPy文档的"Dispatching / Other Dispatchers"部分中,有一个Django样式的正则表达式到视图函数映射定义的示例,但是没有关于如何将其附加到{{1 }}

您应该如何注册此映射?

修改:根据cherrypy.tree Google小组中的"regex URL mapping" thread,我可以确定要使用正则表达式附加视图,您需要使用{{3}使用cherrypy-users类的样式映射,如下所示:

cherrypy.dispatch.RoutesDispatcher

请注意网址格式中的def hello(name='stranger'): """Sample view.""" return 'Hello, %s!'%name dispatch = cherrypy.dispatch.RoutesDispatcher() dispatch.connect('hello-1', '/hello', hello) dispatch.connect('hello-2', '/hello/{name:([^/]+)}', hello) cherrypy.tree.mount(None, config={ '/': { 'request.dispatch': dispatch, } }) 语法。

有没有办法使用CherryPy文档中显示的list-of-pairs语法来指定路由模式?

1 个答案:

答案 0 :(得分:0)

不需要任何额外步骤。在请求期间,cherrypy.tree执行第一个路由阶段,其中传入请求使用其路径到应用程序映射映射到应用程序。当您在启动时调用tree.mount(root=None, script_name='/', config=conf)时,树会在幕后为您创建一个cherrypy.Application并将其安装在'/'。

找到应用程序后,其配置将接管,文档中示例应用程序的“request.dispatch”配置将“对此应用程序中的所有URI使用RoutesDispatcher”。然后,RoutesDispatcher实例将请求的控制权传递给适当的Controller。

文档中的正则表达式示例甚至还没有完善。您需要编写使用它的Dispatcher。该进程“只”需要找到处理程序并收集request.config,但这两个活动可能非常复杂,具体取决于所选的调度样式。请向现有调度员寻求灵感。