• Официальный сайт SDK
  • Сайт с примерами кода

Использование шаблонов

Использование HTML напрямую в коде приложения приводит к сложностям в его сопровождении. Альтернативным вариантом является использование шаблонной системы, которая позволяет отделять дизайн приложения от его кода. Для языка Python доступны множество шаблонных систем: EZT, Cheetah, ClearSilver, Quixote, Django и многие другие. Вы можете разместить выбранный фреймворк вместе со своим приложением, скопировав его код в рабочий каталог приложения.

Для удобства разработчика модуль webapp уже включает в себя шаблонную систему Django. Она поставляется как с SDK так и в составе платформы App Engine, поэтому нет необходимости загружать ее на сервер вместе с приложением.

Использование шаблонов Django

Добавьте следующие операторы import в начало файла helloworld/helloworld.py:

PHNwYW4gY2xhc3M9Imt3ZCI+aW1wb3J0PC9zcGFuPjxzcGFuIGNsYXNzPSJwbG4iPiBvczxicj48L3NwYW4+PHNwYW4gY2xhc3M9Imt3ZCI+ZnJvbTwvc3Bhbj48c3BhbiBjbGFzcz0icGxuIj4gZ29vZ2xlPC9zcGFuPjxzcGFuIGNsYXNzPSJwdW4iPi48L3NwYW4+PHNwYW4gY2xhc3M9InBsbiI+YXBwZW5naW5lPC9zcGFuPjxzcGFuIGNsYXNzPSJwdW4iPi48L3NwYW4+PHNwYW4gY2xhc3M9InBsbiI+ZXh0PC9zcGFuPjxzcGFuIGNsYXNzPSJwdW4iPi48L3NwYW4+PHNwYW4gY2xhc3M9InBsbiI+d2ViYXBwIDwvc3Bhbj48c3BhbiBjbGFzcz0ia3dkIj5pbXBvcnQ8L3NwYW4+PHNwYW4gY2xhc3M9InBsbiI+IDwvc3Bhbj48c3BhbiBjbGFzcz0ia3dkIj50ZW1wbGF0ZTwvc3Bhbj4==

Замените содержимое обработчика MainPage следующим кодом:

CmNsYXNzIE1haW5QYWdlKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6CmRlZiBnZXQoc2VsZik6CmdyZWV0aW5nc19xdWVyeSA9IEdyZWV0aW5nLmFsbCgpLm9yZGVyKCctZGF0ZScpCmdyZWV0aW5ncyA9IGdyZWV0aW5nc19xdWVyeS5mZXRjaCgxMCkKaWYgdXNlcnMuZ2V0X2N1cnJlbnRfdXNlcigpOgp1cmwgPSB1c2Vycy5jcmVhdGVfbG9nb3V0X3VybChzZWxmLnJlcXVlc3QudXJpKQp1cmxfbGlua3RleHQgPSAnTG9nb3V0JwplbHNlOgp1cmwgPSB1c2Vycy5jcmVhdGVfbG9naW5fdXJsKHNlbGYucmVxdWVzdC51cmkpCnVybF9saW5rdGV4dCA9ICdMb2dpbicKdGVtcGxhdGVfdmFsdWVzID0gewonZ3JlZXRpbmdzJzogZ3JlZXRpbmdzLAondXJsJzogdXJsLAondXJsX2xpbmt0ZXh0JzogdXJsX2xpbmt0ZXh0LAp9CnBhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJ2luZGV4Lmh0bWwnKQpzZWxmLnJlc3BvbnNlLm91dC53cml0ZSh0ZW1wbGF0ZS5yZW5kZXIocGF0aCwgdGVtcGxhdGVfdmFsdWVzKSkK=

В завершении создайте новый файл в каталоге helloworld с именем index.html и следующим содержанием:

CiZsdDtodG1sJmd0OwombHQ7Ym9keSZndDsKeyUgZm9yIGdyZWV0aW5nIGluIGdyZWV0aW5ncyAlfQp7JSBpZiBncmVldGluZy5hdXRob3IgJX0KJmx0O2ImZ3Q7e3sgZ3JlZXRpbmcuYXV0aG9yLm5pY2tuYW1lIH19Jmx0Oy9iJmd0OyB3cm90ZToKeyUgZWxzZSAlfQpBbiBhbm9ueW1vdXMgcGVyc29uIHdyb3RlOgp7JSBlbmRpZiAlfQombHQ7YmxvY2txdW90ZSZndDt7eyBncmVldGluZy5jb250ZW50fGVzY2FwZSB9fSZsdDsvYmxvY2txdW90ZSZndDsKeyUgZW5kZm9yICV9CiZsdDtmb3JtIGFjdGlvbj0iL3NpZ24iIG1ldGhvZD0icG9zdCImZ3Q7CiZsdDtkaXYmZ3Q7Jmx0O3RleHRhcmVhIG5hbWU9ImNvbnRlbnQiIHJvd3M9IjMiIGNvbHM9IjYwIiZndDsmbHQ7L3RleHRhcmVhJmd0OyZsdDsvZGl2Jmd0OwombHQ7ZGl2Jmd0OyZsdDtpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTaWduIEd1ZXN0Ym9vayImZ3Q7Jmx0Oy9kaXYmZ3Q7CiZsdDsvZm9ybSZndDsKJmx0O2EgaHJlZj0ie3sgdXJsIH19IiZndDt7eyB1cmxfbGlua3RleHQgfX0mbHQ7L2EmZ3Q7CiZsdDsvYm9keSZndDsKJmx0Oy9odG1sJmd0Owo==

Обновите страницу приложения в своем браузере.

Метод template.render(path, template_values) принимает в качестве своих аргументов имя файла с шаблоном и словарь значений, возвращает отформатированный текст. Для доступа к переменным шаблон использует синтаксис тегов Django. В большинстве случаев можно передавать объекты из хранилища напрямую в шаблон, который затем получит их значения.

Подсказка: Приложения платформы App Engine имеют доступ к своим файлам исключительно в режиме "только для чтения". Значение текущего каталога совпадает с именем корневого каталога, таким образом, нет необходимости указывать путь к файлу с шаблоном index.html.

Для дополнительной информации о шаблонах Django обратитесь к руководству шаблонной системы Django 0.96.

Далее...

Каждое web приложение с помощью шаблонов или другим способом генерирует динамически созданный HTML код. Однако большинству приложений вместе с тем требуется отдавать статические файлы в неизменном виде, такие как изображения, стили CSS, код JavaScript. Для повышения эффективности платформа App Engine может обслуживать работу как кода приложения, так и файлов со статическим содержимым. Мы будем использовать возможности App Engine в своем приложении для реализации поддержки файлов с стилями CSS.

Перейти к Использование статических файлов.