Прежде всего я объясню, как использовать ZPT в обычном проекте. Оттуда я покажу вам, как заставить его работать с Google App Engine.
Установить zope.pagetemplate
# easy_install zope.pagetemplate
В коде представления Python добавьте что-то вроде этого
from zope.pagetemplate.pagetemplatefile import PageTemplateFile
my_pt = PageTemplateFile('mytemplate.pt')
context = {'row': ['apple', 'banana', 'carrot'], 'foo':'bar'}
print my_pt.pt_render(namespace=context)
В вашем шаблоне (mytemplate.pt
)
<html>
<body>
<h1>Hello World</h1>
<div tal:condition="python:foo == 'bar'">
<ul>
<li tal:repeat="item rows" tal:content="item" />
</ul>
</div>
</body>
</html>
В основном это означает, что вам нужно будет сделать следующее:
- Убедитесь, что вы можете установить zope.pagetemplate
- Создать файл .pt
- В вашем коде представления назовите шаблон, а затем визуализируйте его с заданным контекстом
Google App Engine
В GAE вы можете использовать (почти) любой код, который вам нравится, но вы должны предоставить его своему приложению. Чтобы использовать ZPT, вам нужно получить копии пакета zope.pagetemplate и все, от чего это зависит. Я могу сказать вам, что когда вы делаете # easy_install zope.pagetemplate
, вы получаете следующие пакеты:
- zope.pagetemplate
- zope.i18nmessageid
- zope.interface
- zope.tal
- zope.tales
Весьма вероятно, что вы можете обрезать их и удалить код, который вам на самом деле не нужен, но я оставлю это как упражнение для вас.
Как только вы получите копию каждого из вышеперечисленных пакетов, поместите код из каждого пакета в каталог «zope», который вы сможете включить в свое приложение GAE. Это позволит вам импортировать все стандартным способом.
Предполагая, что вы дошли до этого момента, следующим шагом будет создание шаблона, как указано выше, помещение кода представления в соответствующий RequestHandler, а затем запись вывода в конце каждого запроса.
Я создал базовое приложение GAE, которое делает это, и вы можете загрузить его с GitHub.
Для любых существующих (или новых) проектов, которые у вас есть, просто возьмите каталог 'zope' из примера приложения и используйте его, как описано выше.