在CherryPy调度程序中,获取包含查询字符串的原始路径

时间:2018-12-01 21:17:26

标签: python cherrypy

我有一个带有自定义调度程序的CherryPy应用程序,它继承自cherrypy._cpdispatch.Dispatcher。在其方法def __call__(self, path): ...中,我可以获取请求的路径作为参数pathpath不包含查询字符串,也不包含cherrypy.url。我发现我可以分别以cherrypy.request.query_string的形式获取查询字符串。当然,如果我在调度程序中引发重定向,例如

raise cherrypy.HTTPRedirect(transform(path), 301)

然后查询字符串丢失。

我想在重定向后保留查询字符串。有没有办法获取原始路径或URL,包括查询字符串?如果没有,我应该用path + (if query_string then '?' + query_string else '')之类的东西来重建它,还是有更好的方法呢?

1 个答案:

答案 0 :(得分:1)

我意识到cherrypy.url有一些有用的参数。

  • 要获取完整的URL,例如"http://example.com/foo/bar?arg=1",请说cherrypy.url(qs = cherrypy.request.query_string)
  • 要获取完整的服务器相对路径,例如"/foo/bar?arg=1",请说cherrypy.url(qs = cherrypy.request.query_string, relative = "server").