Python 2.7 具有未知应用程序装载路径的Cherrypy URL

Python 2.7 具有未知应用程序装载路径的Cherrypy URL,python-2.7,url-routing,cherrypy,Python 2.7,Url Routing,Cherrypy,我有一个由用户托管的CherryPy webapp。通常,主应用程序是这样安装的: cherrypy.tree.mount(root, '/', root.conf ) 然而,为了让它在反向代理(如nginx)后工作,它需要能够装载到其他地方,用户选择的任何路径: mount = '/my_application' cherrypy.tree.mount(root,

我有一个由用户托管的CherryPy webapp。通常,主应用程序是这样安装的:

cherrypy.tree.mount(root,
                    '/',
                    root.conf
                    )
然而,为了让它在反向代理(如nginx)后工作,它需要能够装载到其他地方,用户选择的任何路径:

mount = '/my_application'
cherrypy.tree.mount(root,
                    mount,
                    root.conf
                    )
其中装载可以是用户选择的任何内容

现在的问题是链接会断开

raise cherrypy.HTTPRedirect("/news")
不再有效。当我需要重定向到地址:port/my_application/news时,它将重定向到地址:port/news

我可以遍历并为每个url创建一个条件,该url作为应用程序路径的前缀:

if mount != '/':
    url = mount + '/news'
raise cherrypy.HTTPRedirect(url)
但必须有更好的方法来做到这一点。我已经查看了请求调度,但我无法让它动态地重新编写URL


处理这种情况的最佳方法是什么?

您可以使用helper函数
cherrypy.url
生成与
脚本名称相关的url(
/my\u应用程序

您将得到以下结果:

raise cherrypy.HTTPRedirect(cherrypy.url('/news'))

cherrypy.url的链接
来源:

是的,我希望我不必通过所有模板和js脚本来修改每个url,但这似乎是唯一的方法。不允许我编辑,但感谢您的指点。非常感谢。是的,据我所知,这是唯一的方法。我为
编写了一个丑陋的
url\u实现,它试图收集应用程序中的所有url并提供解析。这里的挑战是,可能有很多自定义调度器在进行疯狂的URI转换。