Конфигурация файла yaml Google App Engine

У меня возникают проблемы с использованием изображений, файлов html и javascript в Google App Engine. У меня есть папка в папке моего приложения, которая называется static. В статической папке у меня есть еще 3 папки с именами «изображения», «html» и «javascript». Моя часть обработчиков моего app.yaml выглядит следующим образом:

handlers:
- url: /html
  static_dir: static/html

- url: /javascript
  static_dir: static/javascript

- url: /images
  static_dir: static/images

- url: /.*
  script: index.app

Я пытаюсь получить доступ к изображению с помощью

self.response.out.write('<img src="images/image.png">')

и я визуализирую html, используя jinja2,

jinja_environment = jinja2.Environment(autoescape=True,
                    loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), 'html')))

template = jinja_environment.get_template('index.html')
self.response.out.write(template.render(template_values))

Я получаю сообщение об ошибке, что не удалось найти шаблон для jinja, и мое изображение также не найдено. Я думал, что это правильный способ загрузки и использования файлов с Google App Engine, но, очевидно, я ошибаюсь.

Как правильно использовать файлы в папках с Google App Engine?


person Jake Runzer    schedule 02.12.2012    source источник


Ответы (2)


Используя Jinja, вы визуализируете шаблон, который пишет HTML. Это не статическая подача.

И в вашем app.yaml вы используете: static/images или static/html Но в вашем коде вы используете другой путь!! Без статической папки.

Итак, если у вас есть статическая папка и в этой папке у вас есть изображение папки:

self.response.out.write('<img src="/images/image.png">')

И ваш загрузчик:

jinja_environment = jinja2.Environment(autoescape=True,
                    loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__),'static', 'html')))
person voscausa    schedule 02.12.2012
comment
Jinja html теперь работает, но я все еще не могу заставить работать изображение или javascript. Я вызываю javascript с помощью ('‹script src=/static/javascript/script.js›'). Я получаю ту же ошибку 404 в журнале. - person Jake Runzer; 02.12.2012
comment
Извините за статические обработчики, вам не нужно использовать статический в пути, потому что ваш URL-адрес yaml не содержит статического. - person voscausa; 02.12.2012

Если вы собираетесь использовать систему шаблонов с вашим HTML, вы не хотите объявлять его как static_dir, причина в том, что статические файлы хранятся в отдельной файловой системе, чем файлы вашего приложения, поэтому они не смогут оказывать. Когда вы используете os.path.dirname(__file__)....., вы ищете файлы в файловой системе вашего приложения, которая отличается от указанной вами директории static. Итак, первое, что нужно попробовать, это просто удалить:

- url: /html
  static_dir: static/html

от ваших кураторов. Затем он будет искать файловую систему вашего приложения и (надеюсь :)) найдет ее. Ваш обработчик изображений выглядит нормально, поэтому я бы сначала попробовал это и посмотрел, имеет ли это значение.

person RocketDonkey    schedule 02.12.2012