在CherryPy文档的"Dispatching/Other Dispatchers"部分中,有一个Django样式的正则表达式到视图函数映射定义的示例,但没有说明如何将其附加到。在CherryPy中使用映射
你应该如何注册这个映射?
编辑:基于cherrypy-users
谷歌组中的"regex URL mapping" thread,我能想出的是使用正则表达式附加意见,则需要使用使用routes
风格映射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,
}
})
请注意URL模式中的{argument-name:regular-expression}
语法。
有没有一种方法可以使用CherryPy文档中所示的列表对语法来指定路由模式?
你看过我提到的[示例](http://docs.cherrypy.org/stable/concepts/dispatching.html#other-dispatchers)吗? 'mappings'变量不会传递给'cherrypy.tree'。 –
啊!现在我明白你的问题了:)这个“例子”并不是真正的规范性的,它只是为了说明基于正则表达式的解决方案的地图本身的样子。为了完成它,你必须编写一个Dispatcher子类,用它来返回页面处理程序并收集当前请求的配置。这个过程对于不同的风格是如此不同,很难告诉你如何为一个特定的风格,而不是自己做这一切。 ;)但'_cpdispatch.py'中有现成的调度程序帮助开始。 – fumanchu
我已经看过'_cpdispatch.py',并且肯定没有发现支持这样的正则表达式处理器映射列表的调度器:-)所以,基本上,CherryPy没有内置的对Django式调度器的支持,如示例。我知道了。如果你在答案中明确说明了这一点,我会接受它。 –