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

1 投票
2 回答
531 浏览
提问于 2025-04-16 05:26

我需要在我的pylons应用中生成一个URL,用作外部系统的回调。这就需要我提供一个相对于pylons应用的控制器路径,这个路径是通过url方法生成的:

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

不过,我需要的是完整的URL,包括主机名、相对路径(在使用mod_wsgi的情况下,路径可能还会包含服务器配置中的其他部分)等等。

我该怎么才能得到这个完整的URL呢?

2 个回答

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

你应该使用url()这个函数来生成合适的网址,像这样:

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

撰写回答