Veicular arquivos estáticos

Esta parte das instruções passo a passo do código do Python Guestbook mostra como veicular arquivos estáticos. O App Engine não exibe arquivos diretamente do diretório de origem do aplicativo, a menos que esteja configurado para isso. Mas há muitos casos em que você quer veicular arquivos estáticos diretamente no navegador da Web. Imagens, folhas de estilo CSS, código JavaScript, filmes e animações em Flash são todos tipicamente armazenados com um aplicativo da Web e veiculados diretamente para o navegador.

Esta página é parte de um tutorial com várias páginas. Para começar e ver as instruções de configuração, acesse Como criar um guestbook.

Como configurar o aplicativo para usar arquivos estáticos

Os arquivos CSS do aplicativo de livro de visitas estão no diretório bootstrap/css. O modelo da página da Web do aplicativo, index.html, instrui o navegador a carregar bootstrap.css e bootstrap-responsive.css, que são arquivos 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">

O arquivo app.yaml especifica o diretório bootstrap como o local dos arquivos estáticos:

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

- url: /bootstrap
  static_dir: bootstrap

- url: /.*
  script: guestbook.app

A seção handlers define dois gerenciadores para URLs. Quando o App Engine recebe uma solicitação para um URL que começa com /bootstrap, ele mapeia o restante do caminho para arquivos no diretório bootstrap e, se um arquivo apropriado for encontrado, o conteúdo do arquivo será retornado para o cliente. Todos os outros URLs correspondem ao padrão /.* e são processados pelo objeto app no módulo guestbook.

Os padrões de caminho de URL são testados na ordem em que aparecem app.yaml. Nesse caso, o padrão /bootstrap corresponde antes do padrão /.* para os caminhos apropriados. Para mais informações sobre mapeamento de URL e outras opções que você pode especificar em app.yaml, consulte a referência app.yaml.