webapp2路由外部链接

时间:2013-02-05 12:27:38

标签: google-app-engine webapp2

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

由于我已经在使用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路由甚至是为外部链接设计的吗?
  • 如果是,您如何添加绝对网址?
  • 如果不是,是否有类似的机制?

使用webapp2s路由会很好,所以我可以无缝地使用url_for,而不必编写另一个“相同但不同”的方法。

2 个答案:

答案 0 :(得分:0)

我设法通过实现自己的uri_for方法来解决问题,并使用它来代替

def uri_for(_name, _request=None, *args, **kwargs):
    uri = webapp2.uri_for(_name, _request, *args, **kwargs)
    return urllib.unquote(uri)

答案 1 :(得分:0)

而不是_full(如上面提到的voscausa),您可以在调用uri_for时将_netloc与服务器名称放在一起。将_netloc强制_full置于True。

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