[英]Python Pyramid & Chameleon templating language escapes html
我無法理解變色龍的標簽。 我是django的用戶,但我決定將我的CompSci課程伙伴和我自己介紹給Pyramid,因為我雖然更輕巧=更容易學習。
目前$ {}標簽正在逃避我試圖通過它輸出的任何html標簽。 在django中,有一些方法可以指定變量是“安全的”並且不需要進行轉義。
我怎樣才能在金字塔/變色龍中做同樣的事情?
變色龍還允許$ {structure:markup}。
Chameleon基於Zope頁面模板庫,因此如果您發現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渲染器不會嘗試轉義的對象中(這意味着它具有__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>'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.