Chameleon基于Zope页面模板库,因此,如果您发现缺少Chameleon文档,则不妨查看zpt文档。
无论如何,有两种主要方法可以做到这一点。如果使用tal:replace或tal:content标记属性进行渲染,则可以使用“ structure”。这是通过structure
在字符串的开头放置一个空格,最后是要呈现的模板变量的名称来完成的。一个例子如下所示:
s = '''
<html>
<head>
</head>
<body>
<div tal:content="structure t">
</div>
</body>
</html>
'''
from chameleon import PageTemplate
pt = PageTemplate(s)
print pt(t='<p>Hi!</p>')
如果您不想使用tal:replace或tal:content函数,则需要将字符串包装在Chameleon渲染器将不会尝试转义的对象中(这意味着它具有一个__html__
返回字符串应为真值的方法) 。通常,这意味着创建一个“文学”类,如下所示:
a = '''
<html>
<head>
</head>
<body>
<div>
${t}
</div>
</body>
</html>
'''
from chameleon import PageTemplate
pt = PageTemplate(a)
class Literal(object):
def __init__(self, s):
self.s =s
def __html__(self):
return self.s
print pt(t=Literal('<p>Hi!</p>'))