在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式調度器的支持,如示例。我知道了。如果你在答案中明確說明了這一點,我會接受它。 –