2011-06-14 20 views
5

¿Hay alguna manera de obtener la url de la aplicación absoluta de pirámide en la función main()? Quiero agregarlo a la configuración global, por lo que podría llamarse en todas partes (en plantillas y archivos js). En documentos piramidales hay algunas funciones que podrían ser útiles, pero todas necesitan un objeto de solicitud y deben llamar una vista. Gracias.pyramid: obtener la URL absoluta de la aplicación

Respuesta

4

Pirámide (como la mayoría de las aplicaciones WSGI) se puede montar en cualquier prefijo de dominio y URL. Por lo tanto, la aplicación en sí misma no sabe de qué URL es responsable a menos que la codifique específicamente en su aplicación (una configuración INI, por ejemplo).

Esto es por qué existe request.application_url ... porque el APPLICATION_URL podría ser diferente por solicitud basado en la cantidad de diferentes dominios y prefijos de URL que tiene que estamos pasando peticiones a su aplicación.

3

Acabo de obtener la ruta completa para mi índice de ruta, 'casa' en mi caso:

me puse esto en mi plantilla de envoltura principal mako de modo que todas las llamadas JS puede hacer referencia a ella para construir un camino adecuado para las llamadas ajax/etc

<script type="text/javascript" charset="utf-8"> 
     <% 
      app_url = request.route_url('home').rstrip('/') 
     %> 
     APP_URL = '${app_url}'; 
    </script> 
+2

Tenga en cuenta que '' request.application_url'' también está disponible. Creo que el punto aquí es que el objeto de solicitud está disponible en sus plantillas, no solo en sus vistas. –

+0

Sí request.application_url existe en cada solicitud, pero estoy buscando una forma sin necesidad de solicitud del objeto, o con solicitud falsa en la función main() en __init__.py. –

Cuestiones relacionadas