【发布时间】:2014-06-03 14:04:26
【问题描述】:
好的,所以我想用这段代码捕获我的 Flask 应用程序中的所有 URL
@app.route('/<path:path>')
def catch_all(path):
return path
只是一个显示每个页面的相对路径的基本应用程序。所以这适用于大多数路径(localhost/whatever/I/want 例如打印whatever/I/want)。
除了一种情况。例如,如果我在 URL 栏中输入localhost/foo/http://google.com/bar,我期望显示的是foo/http://google.com/bar,但我实际得到的只是bar。所以实际上 Flask 会找到最后一个有效的 URL 并采用该 URL 后面的路径。
有没有办法捕捉到我们 URL 的真实路径?
编辑:我正在使用 Google App Engine for Python 运行 Flask 0.10。
【问题讨论】:
-
我无法使用 Flask-0.10.1 重现您的问题,因为我在访问
http://localhost:8000/foo/http://google.com/bar时得到了foo/http://google.com/bar的预期输出。 -
Flask(和 Werkzeug)确实不按照您描述的方式行事。您确定您没有运行任何中间件或 WSGI 服务器来代替您执行此操作吗?
-
我从 Google App Engine Python 页面引导我的项目:developers.google.com/appengine/docs/python/…,所以我猜有 App Engine WSGI。有人知道怎么解决吗?
-
这确实是 Google SDK 所做的,而不是 Flask。我设法用当前的 SDK 重现。
标签: python google-app-engine url flask