在 CherryPy 调度程序中,获取包含查询字符串的原始路径
In a CherryPy dispatcher, get the original path including the query string
我有一个带有自定义调度程序的 CherryPy 应用程序,继承自 cherrypy._cpdispatch.Dispatcher
。在它的方法def __call__(self, path): ...
中,我可以得到请求的路径作为参数path
。 path
不包含查询字符串,cherrypy.url
也不包含。我发现我可以单独获取查询字符串 cherrypy.request.query_string
。当然,如果我在调度程序中提出重定向,例如
raise cherrypy.HTTPRedirect(transform(path), 301)
然后查询字符串丢失。
我想在重定向后保留查询字符串。有没有办法获取原始路径或 URL,包括查询字符串?如果不是,我应该用 path + (if query_string then '?' + query_string else '')
之类的东西重建它,还是有更好的方法来做到这一点?
我意识到 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").
我有一个带有自定义调度程序的 CherryPy 应用程序,继承自 cherrypy._cpdispatch.Dispatcher
。在它的方法def __call__(self, path): ...
中,我可以得到请求的路径作为参数path
。 path
不包含查询字符串,cherrypy.url
也不包含。我发现我可以单独获取查询字符串 cherrypy.request.query_string
。当然,如果我在调度程序中提出重定向,例如
raise cherrypy.HTTPRedirect(transform(path), 301)
然后查询字符串丢失。
我想在重定向后保留查询字符串。有没有办法获取原始路径或 URL,包括查询字符串?如果不是,我应该用 path + (if query_string then '?' + query_string else '')
之类的东西重建它,还是有更好的方法来做到这一点?
我意识到 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").