2010-10-13 20 views
1

Je dois générer une URL à utiliser comme rappel dans un système externe dans mon application pylônes. Cela me oblige à fournir à la fois le chemin du contrôleur pylones-app-relative (généré par la méthode url:Comment puis-je générer une URL absolue pour un contrôleur Pylons?

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

Cependant, je dois l'URL complète, nom d'hôte, les chemins relatifs (en cas de mod_wsgi, où le chemin pourrait inclure d'autres parties de la configuration du serveur) & c

Comment puis-je obtenir ce

Répondre

1

Vous devriez demander url() pour générer URL qualifiés comme ceci:

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

Vous pouvez utiliser la fonction de routes url_for, qui prend un paramètre pour l'hôte.?

from routes import url_for 
from pylons import request 

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

Bien sûr, cela ne fonctionne que si l'hôte est le même que celui de la requête.