编程语言
首页 > 编程语言> > python-在CherryPy中使用映射

python-在CherryPy中使用映射

作者:互联网

在CherryPy文档的“Dispatching / Other Dispatchers”部分中,有一个Django样式的regular-expression-to-view-function映射定义的示例,但是没有指示如何将其附加到cherrypy.tree上.

您应该如何注册此映射?

编辑:基于cherrypy-users Google组中的“regex URL mapping” thread,我可以弄清楚要使用正则表达式附加视图,您需要使用cherrypy.dispatch.RoutesDispatcher类使用routes样式的映射,如下所示:

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)时,Tree将在后台为您创建一个cherrypy.Application并将其安装在’/’处.

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

文档中的正则表达式示例甚至还不够完善.您需要编写一个使用它的Dispatcher.该过程“仅”需要找到处理程序并收集request.config,但根据所选择的调度方式,这两个活动可能非常复杂.请参阅现有的调度员以获取灵感.

标签:python,cherrypy
来源: https://codeday.me/bug/20191011/1896322.html