2

我想在我的应用程序的中心位置管理外部链接,这样如果它们发生变化,我只需在一个地方更改它们。

由于我已经在使用 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 而不必编写另一个“相同但不同”的方法。

4

2 回答 2

0

我设法通过实现我自己的 uri_for 方法解决了这个问题,并改用它

def uri_for(_name, _request=None, *args, **kwargs):
    uri = webapp2.uri_for(_name, _request, *args, **kwargs)
    return urllib.unquote(uri)
于 2013-02-13T12:52:12.657 回答
0

在调用 uri_for 时,您可以将 _netloc 与服务器名称一起代替 _full(如上面提到的 voscausa)。将 _netloc 强制 _full 为 True。

请参阅http://webapp-improved.appspot.com/api/webapp2.html#uri-routing

于 2014-04-21T18:38:17.813 回答