我想在我的应用的中心位置管理外部链接,这样如果他们发生变化,我只需要在一个地方更改它们。
由于我已经在使用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_for,而不必编写另一个“相同但不同”的方法。
答案 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