python - Pyramid 替换 URL Matchdict 中的双正斜杠

标签 python regex pyramid

本质上,我只是在 Pyramid 内部构建一个 API 重定向路由来处理跨域 AJAX 请求,而不使用 JSONP。

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

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

我想用它来捕获 URL,如下所示:

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

但是,当从请求 matchdict 中获取捕获的 URL 后缀时,我得到以下结果:

http:/location.of/other/api

我猜测在 URL 处理/匹配过程中进行了一些转义?如何避免这种情况,并获得带有两个正斜杠的所需 URL?

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

最佳答案

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

我想我应该指出原始 URL 是可用的,但你必须从中解析出你自己关心的部分。它位于 request.url 中。 request.path_info 是 Pyramid 和大多数 WSGI 应用程序用来分派(dispatch) URL 的内容,因为它仅包含与应用程序安装位置相关的子路径。

关于python - Pyramid 替换 URL Matchdict 中的双正斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10939108/

相关文章:

python - 混合 matplotlib 交互式图和内联图?

Ruby gsub 不区分大小写无法按预期工作

c++ - 提取两个其他模式之间的匹配线

python - python 中的 MemoryError 分块上传

python - 从 python 中的 Twisted 协议(protocol)获取裸套接字 fd?

使用 selenium : ui-dialog trouble with switching 进行 Python 3 网页抓取

python - pandas 过滤大数据框并按列表排序

regex - 为什么 Groovy 正则表达式匹配器不能被否定?

python - 使用 CLI 脚本共享 Pyramid 配置

python - 删除时无法捕获 SQLAlchemy IntegrityError