如何为Pylons控制器生成绝对URL?
我需要在我的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'