Servir archivos estáticos


Esta parte de la guía del código del Libro de visitas de Python muestra cómo entregar archivos estáticos. App Engine no entrega archivos de forma directa desde el directorio fuente de la aplicación, a menos que esté configurado para hacerlo. Sin embargo, hay muchos casos en los que deseas entregar archivos estáticos directamente al navegador web. Las imágenes, las hojas de estilo CSS, el código JavaScript, las películas y las animaciones Flash se suelen almacenar con una aplicación web y se entregan directamente al navegador.

Esta página forma parte de un instructivo de varias páginas. Si deseas comenzar desde el principio y ver las instrucciones de configuración, ve a Crear un libro de visitas.

Configurar la aplicación para usar archivos estáticos

Los archivos CSS para la aplicación de libro de visitas están en el directorio bootstrap/css. La plantilla para la página web de la app, index.html, indica al navegador que cargue bootstrap.css y bootstrap-responsive.css, que son archivos estáticos:

<link type="text/css" rel="stylesheet" href="/bootstrap/css/bootstrap.css">
<link type="text/css" rel="stylesheet" href="/bootstrap/css/bootstrap-responsive.css">

El archivo app.yaml especifica el directorio bootstrap como la ubicación para los archivos estáticos:

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: /bootstrap
  static_dir: bootstrap

- url: /.*
  script: guestbook.app

La sección handlers define dos controladores para URL. Cuando App Engine recibe una solicitud de una URL que comienza con /bootstrap, asigna el resto de la ruta a los archivos en el directorio bootstrap, y si se encuentra un archivo apropiado, el contenido del archivo se muestra al cliente. Todas las demás URL coinciden con el patrón /.* y son controladas por el objeto app en el módulo guestbook.

Los patrones de ruta de URL se prueban en el orden en que aparecen en app.yaml. En este caso, el patrón /bootstrap coincide con el patrón /.* para las rutas adecuadas. Para obtener más información sobre la asignación de URL y otras opciones que puedes especificar en app.yaml, consulta la referencia de app.yaml.