1

有没有人尝试在 Google App Engine 中使用 ZPT?如果是,请告诉我如何。提前致谢。

编辑:

DisplacedAussie的http://gae-zpt.appspot.com/示例https://stackoverflow.com/users/2962/displacedaussie

可以从http://github.com/displacedaussie/gae-zpt下载

我现在可以愉快地运行在:http ://blogthere.appspot.com/

4

1 回答 1

3

首先,我将解释如何在正常项目中使用 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 文件
  • 在您的视图代码中,命名一个模板,然后使用给定的上下文呈现它

谷歌应用引擎

在 GAE 中,您可以(几乎)使用任何您喜欢的代码,但您必须在您的应用程序中提供它。要使用 ZPT,您需要获取 zope.pagetemplate 包的副本以及它所依赖的任何内容。我可以告诉你,当你这样做时,# easy_install zope.pagetemplate你最终会得到以下包:

  • zope.pagetemplate
  • zope.i18nmmessageid
  • zope.interface
  • zopetal
  • zope.tales

很有可能您可以减少这些并删除您实际上不需要的代码,但我将把它作为练习留给您。

获得上述每个包的副本后,将每个包中的代码放入“zope”目录中,您可以将其包含在 GAE 应用程序中。这将允许您以标准方式导入所有内容。

假设你已经到了这一点,下一步就是像上面一样创建模板,将视图代码放入相应的 RequestHandler 中,然后在每个请求结束时编写渲染输出。

我已经创建了一个基本的 GAE 应用程序来执行此操作,您可以从 GitHub下载它。

对于您拥有的任何现有(或新)项目,只需从示例应用程序中获取“zope”目录并按照上述说明使用它。

于 2010-02-03T11:54:23.833 回答