gpt4 book ai didi

python - 在 CherryPy 中使用映射

转载 作者:太空宇宙 更新时间:2023-11-04 06:35:55 25 4
gpt4 key购买 nike

"Dispatching / Other Dispatchers"在 CherryPy 文档的部分,有一个 Django 风格的正则表达式到 View 函数映射定义的示例,但没有说明如何将其附加到 cherrypy.tree

你应该如何注册这个映射?

编辑:基于"regex URL mapping" threadcherrypy-users Google 组中,我发现要使用正则表达式附加 View ,您需要使用 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 文档中所示的成对列表语法来指定路由模式?

最佳答案

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

一旦找到该应用程序,它的配置就会接管,并且文档中示例应用程序的“request.dispatch”配置说“对该应用程序中的所有 URI 使用 RoutesDispatcher”。该 RoutesDispatcher 实例随后会将请求的控制权传递给适当的 Controller 。

文档中的正则表达式示例甚至没有那么完善。您需要编写一个使用它的 Dispatcher。该过程“仅”需要找到处理程序并收集 request.config,但这两个事件可能非常复杂,具体取决于所选的调度方式。查看现有的调度程序以获取灵感。

关于python - 在 CherryPy 中使用映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11142625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com