В диспетчере CherryPy получите исходный путь, включая строку запроса - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть приложение 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 '') или есть лучший способ сделать это?

1 Ответ

0 голосов
/ 05 декабря 2018

Я понял, что 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").
...