ZPT Usage¶
This document focuses on usage of the Page Templates API.
For information about writing Page Templates documents and using TAL and TALES, refer to the reference documentation or the Chameleon documentation if you are using z3c.ptcompat.
Simple Usage¶
Using Page Templates is very easy and straight forward. Let’s look at
a quick example. Suppose we have a file called hello_world.pt
with
these contents:
<html><body>Hello World</body></html>
>>> from zope.pagetemplate.pagetemplatefile import PageTemplateFile
>>> my_pt = PageTemplateFile('hello_world.pt')
>>> print(my_pt().strip())
<html><body>Hello World</body></html>
Subclassing PageTemplates¶
Lets say we want to alter page templates such that keyword arguments
appear as top level items in the namespace. We can subclass
PageTemplate
and alter the default behavior of
pt_getContext()
to add them in:
from zope.pagetemplate.pagetemplate import PageTemplate
class mypt(PageTemplate):
def pt_getContext(self, args=(), options={}, **kw):
rval = PageTemplate.pt_getContext(self, args=args)
options.update(rval)
return options
class foo(object):
def getContents(self): return 'hi'
So now we can bind objects in a more arbitrary fashion, like the following:
template = """
<html>
<body>
<b tal:replace="das_object/getContents">Good Stuff Here</b>
</body>
</html>
"""
pt = mypt()
pt.write(template)
print(pt(das_object=foo()).strip())
<html>
<body>
hi
</body>
</html>