Использование ZPT в Google App Engine

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

ИЗМЕНИТЬ:

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

Его можно загрузить с http://github.com/displacedaussie/gae-zpt.

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


person Viet    schedule 31.01.2010    source источник
comment
Если вы объясните, в чем ошибка, это, вероятно, будет более полезно.   -  person Lennart Regebro    schedule 02.02.2010
comment
Привет, ошибок нет. Я понятия не имею, как извлечь ZPT и запустить его. Поэтому и не пробовал. Вы пробовали бегать?   -  person Viet    schedule 02.02.2010


Ответы (1)


Прежде всего я объясню, как использовать 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
comment
+1 Спасибо. Было бы здорово увидеть адаптацию к GAE. Насколько я знаю, ZPT — это чистый Python, поэтому адаптация возможна. Я не уверен, что это так же просто, как копирование файлов. - person Viet; 03.02.2010