Chameleon основан на библиотеке Zope Page Templates , поэтому, если вы обнаружите, что документация Chameleon отсутствует, вы можете проверить документы zpt.
В любом случае, естьдва основных способа сделать это.Если вы выполняете рендеринг с использованием атрибута тега tal: replace или tal: content, вы можете использовать «структуру» .Это делается путем помещения 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 не будет пытаться использоватьescape (имеется в виду метод __html__
, который возвращает строку).Как правило, это означает создание класса «Literal», как показано ниже:
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>'))