金字塔替换URL Matchdict中的双向前斜线

时间:2012-06-07 20:09:49

标签: python regex pyramid

基本上,我只是在Pyramid内部构建API重定向路由,以便在不使用JSONP的情况下处理跨域AJAX请求。

我添加了一条路线,如下:

config.add_route("api","/api/{url:.*}")

我希望像这样捕获网址:

http://domain.com/api/http://location.of/other/api

但是,当从Request matchdict获取捕获的URL后缀时,我得到以下内容:

http:/location.of/other/api

我猜测在URL处理/匹配期间已经完成了一些转义?如何避免这种情况,并使用两个正斜杠获得所需的URL?

即使我将URL作为GET参数传递,问题仍然存在。也许这与金字塔的多元化工作方式有关?

1 个答案:

答案 0 :(得分:3)

这是任何基于WSGI的应用程序的基本限制。 URL被URL解码,并且在将URL传递给WSGI应用程序之前压缩斜杠。如果你想保留斜线,你需要对它们进行两次urlencode。 AFAIK无法使用查询字符串。

我想我应该指出原始网址是可用的,但是从中你必须解析你自己关心的部分。它位于request.urlrequest.path_info是Pyramid和大多数WSGI应用程序用于分发URL的原因,因为它只包含与应用程序安装位置相关的子路径。