Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python金字塔&;变色龙模板语言逃避html_Python_Pyramid_Chameleon_Template Tal - Fatal编程技术网

Python金字塔&;变色龙模板语言逃避html

Python金字塔&;变色龙模板语言逃避html,python,pyramid,chameleon,template-tal,Python,Pyramid,Chameleon,Template Tal,我弄不懂变色龙的标签。我是django的用户,但我决定向Pyramid介绍我的CompSci课程伙伴和我自己,因为我觉得更轻量级=更容易学习 目前,${}标记正在转义我试图通过它输出的任何html标记。在django中,有某种方法可以指定变量是“安全的”,不需要转义 如何在金字塔/变色龙中执行相同的操作?变色龙基于库,因此如果您发现缺少变色龙文档,您可能希望查看zpt文档 在任何情况下,有两种主要方法可以做到这一点。如果使用tal:replace或tal:content标记属性进行渲染,则可以使

我弄不懂变色龙的标签。我是django的用户,但我决定向Pyramid介绍我的CompSci课程伙伴和我自己,因为我觉得更轻量级=更容易学习

目前,${}标记正在转义我试图通过它输出的任何html标记。在django中,有某种方法可以指定变量是“安全的”,不需要转义

如何在金字塔/变色龙中执行相同的操作?

变色龙基于库,因此如果您发现缺少变色龙文档,您可能希望查看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>')
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>'))

Chameleon还允许${structure:markup}。

谢谢。第二个文字解决方案非常优雅。下面由jules提出的解决方案似乎是最简单的。因为我不清楚(可能是因为我是变色龙新手):关键字是
结构:
。我试图使用
${myVar:markup}
,但由于错误消息而有点不知所措。