Прежде всего я объясню, как использовать 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.интерфейс
- зопе.таль
- зопе.сказки
Весьма вероятно, что вы можете обрезать их и удалить код, который вам на самом деле не нужен, но я оставлю это вам в качестве упражнения.
Получив копию каждого из вышеперечисленных пакетов, поместите код из каждого пакета в каталог «zope», который вы сможете включить в свое приложение GAE. Это позволит вам импортировать все стандартным способом.
Предполагая, что вы дошли до этого момента, следующим шагом будет создание шаблона, как указано выше, помещение кода представления в соответствующий RequestHandler, а затем запись обработанного вывода в конце каждого запроса.
Я создал базовое приложение GAE, которое делает это, и вы можете загрузить его с GitHub.
Для любых существующих (или новых) проектов, которые у вас есть, просто возьмите каталог 'zope' из примера приложения и используйте его, как описано выше.
person
DisplacedAussie
schedule
03.02.2010