如何为Pylons控制器生成绝对URL?

时间:2010-10-13 16:48:13

标签: python pylons mod-wsgi

我需要生成一个URL,用作我的pylons应用程序中外部系统的回调。这需要我提供pylons-app-relative控制器路径(由url方法生成:

>>> relative_url = url(controller='my_cont', action='callback', id=generated_id)
>>> print relative_url
/my_cont/callback/1234

但是,我需要整个网址;主机名,相对路径(如果是mod_wsgi,路径可能包含服务器配置中的其他部分)& c。

我怎么能得到它?

2 个答案:

答案 0 :(得分:1)

您可以使用路由功能url_for,它接受主机的参数:

from routes import url_for
from pylons import request

abs_url = url_for(host=request.host,
                  controller="my_cont",
                  action="callback",
                  id=gen_id)

当然,这仅在主机与请求的相同时才有效。

答案 1 :(得分:1)

您应该让url()生成如下所示的限定网址:

>>> url(controller='rpc/sessions', action='index')
'/rpc/sessions'
>>> url(controller='rpc/sessions', action='index', qualified=True)
'http://localhost/rpc/sessions'