0
У меня есть URL-адрес в CherryPy похож на StackOverflow как:CherryPy вопрос URL
http://sample.com/post/12345/hello-world
, но я хочу сделать следующий URL тоже работает в CherryPy:
http://sample.com/post/12345/hello-world?from=something&else=123
и она должна быть исправлена до:
http://sample.com/post/12345/hello-world
как я могу это сделать?
Я использую popargs и _cp_dispatch без успеха. любое предложение было бы оценено.
благодаря
EDIT
Я получил это работает на основе ответа SAAJ, но я хочу, чтобы переместить код индексировать(), и UR возвращают 404.
import cherrypy
class App:
@cherrypy.expose
def index(self, id, name = None, **kwargs):
if kwargs:
# do your querystring processing
raise cherrypy.HTTPRedirect(cherrypy.url())
if not name:
# get name part for canonical url
name = '{0}/hello-world'.format(id)
raise cherrypy.HTTPRedirect(cherrypy.url(name))
return '{0} {1} {2}'.format(id, name, kwargs)
if __name__ == '__main__':
cherrypy.quickstart(App(), '/post', config)
больше помощи очень ценится. Я все еще новичок в cheerypy.
Когда я перемещаю содержимое сообщения() в index(), то cherrypy.quickstart (App(), '/ post', config). он снова возвращает 404. Есть идеи? – triston
@triston Вы видите это поведение, потому что метод '' index'' (http://cherrypy.readthedocs.org/en/3.3.0/tutorial/dispatching.html#index-methods) является особенным. Вот цитата '' Однако, в отличие от всех других обработчиков страниц, она не может принимать позиционные аргументы''. Также обратите внимание на понятие приложения CherryPy. Это то, что вы монтируете в дерево либо с помощью '' cherrypy.quickstart'', либо '' cherrypy.tree.mount''. Обычно он охватывает более крупный автономный объем, например, блог, магазин или панель администратора. Итак, для ваших первых шагов с CherryPy вы можете остаться с одним приложением для простоты. – saaj