Использование ZPT в Google App Engine - PullRequest
1 голос
/ 31 января 2010

Кто-нибудь пробовал использовать ZPT в Google App Engine? Если да, пожалуйста, дайте мне знать, как. Заранее спасибо.

EDIT:

Пример на http://gae -zpt.appspot.com / от DisplacedAussie https://stackoverflow.com/users/2962/displacedaussie

Может быть загружен с http://github.com/displacedaussie/gae-zpt

Теперь я могу счастливо бежать по адресу: http://blogthere.appspot.com/

1 Ответ

3 голосов
/ 03 февраля 2010

Прежде всего я объясню, как использовать 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' из примера приложения и используйте его, как описано выше.

...