【发布时间】:2013-02-05 12:27:38
【问题描述】:
我想在我的应用程序的一个中心位置管理外部链接,这样如果它们发生变化,我只需在一个位置进行更改。
由于我已经在使用 webapp2s 路由,我想我可以使用它,并像使用其他链接一样使用 url_for。所以,尝试了以下方法:
Route('http://www.google.com', name='google', build_only=True)
但是当我渲染链接时,像这样:
uri_for('google')
它对 http:// 位进行编码,如下所示:
http%3A//www.google.com
这意味着如果你在 href 标记中使用它,你最终会得到一个像这样的相对链接:
http://localhost:8080/some/path/http%3A//www.google.com
所以,问题是:
- webapp2s 路由甚至是为外部链接设计的吗?
- 如果是,如何添加绝对 URL?
- 如果没有,是否有类似的机制可以这样做?
使用 webapp2s 路由会很好,这样我就可以无缝地使用 url_for 而不必编写另一个“相同但不同”的方法。
【问题讨论】:
-
也许这行得通:添加 _full=True 给 uri_for('google', _full=True)
-
@voscausa 感谢您的建议,但这没有用。 _full 参数强制该方法返回从当前服务器地址派生的绝对 url,这不是我需要的。我设法通过覆盖 uri_for 方法并使用 urllib.unquote() 将字符串解码回来来解决问题。我将添加一个解释的答案。谢谢