¿Cómo funciona add_static_view de Pyramid?

¿Cómo funciona add_static_view(name, path) en Pyramid?

Desde la cadena de documentos:

"El name El argumento es una cadena que representa un prefijo de URL local relativo a la aplicación. Alternativamente, puede ser una URL completa. Él path El argumento es la ruta en el disco donde residen los archivos estáticos. Puede ser una ruta absoluta, una ruta relativa al paquete o una especificación de activos".

De alguna manera tengo la impresión de que esta descripción no es muy precisa.

Si agrego algo de código a lo largo de las líneas de

config.add_static_view("static", "/path/to/resource/on/filesystem")

y yo visito

http://localhost:PORT/static/logo.png  

Veo el logo.png dado que se puede encontrar en

/path/to/resource/on/filesystem/

Ahora, si tengo un código como el siguiente

config.add_static_view("http://myfilehoster.com/images", "myproject:images")

la descripción de que "la path argumento es la ruta en el disco donde residen los archivos estáticos" ya no parece preciso porque los archivos reales residen en el disco de myfilehoster. Me parece que simplemente estoy registrando algún tipo de identificador (myproject:images) que puedo usar dentro de mi código de programa para hacer referencia a la ubicación "real" "http://myfilehoster.com/images".

request.static_url("myproject:images/logo.png") 

se resolvería en "http://myfilehoster.com/images/logo.png".

Entonces, ¿la documentación es inexacta aquí o me estoy perdiendo algo?

preguntado el 27 de julio de 12 a las 15:07

1 Respuestas

Te estás perdiendo algo. En el documentación narrativa sobre activos estáticos afirma:

En lugar de representar un prefijo de URL, el name argumento de una llamada a add_static_view() puede ser alternativamente un Enlance. Cada uno de los ejemplos que hemos visto hasta ahora ha mostrado el uso de la name argumento como un prefijo de URL. Sin embargo cuando name es un Enlance, los activos estáticos se pueden servir desde un servidor web externo. En este modo, el name se usa como prefijo de URL al generar una URL usando pyramid.request.Request.static_url().

En la pestaña Documentación de la API se utiliza una redacción similar:

Cuándo add_static_view se llama con un name argumento que representa un prefijo de URL, como está arriba, las llamadas posteriores a pyramid.request.Request.static_url() con caminos que comienzan con el path argumento pasado a add_static_view generará una URL algo así como http://<Pyramid app URL>/images/logo.png, que causará el logo.png archivo en el subdirectorio de imágenes del mypackage paquete a servir.

El uso de una URL cambia el comportamiento de add_static_view en total y el path argumento se interpreta como un camino simbólico sólo para el .static_url() método. Ese último detalle tal vez no se describa explícitamente en la documentación, podría presentar un problema en el rastreador de problemas piramidales si te sientes fuerte al respecto.

Respondido 18 Oct 16, 18:10

¡Gracias! Eso me lo aclara. Supongo que probablemente propondré un cambio en la documentación que, por lo demás, ha sido muy buena hasta ahora. - Atón

Creo que esto me convenció de usarlo en todas partes ahora. - Loïc Faure-Lacroix

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.