Python Pyramid & Chameleon Templating -Sprache entkommt HTML
-
27-10-2019 - |
Frage
Ich kann Chamäleons Tags nicht verstehen. Ich bin ein Django -Benutzer, habe mich aber entschlossen, meine CompSCI -Kurskollegen und mich in Pyramide vorzustellen, da ich jedoch leichter = leichter zu lernen hat.
Im Moment entgeht das $ {} -Tag allen HTML -Tags, die ich versuche, es zu geben. In Django gab es eine Möglichkeit, festzustellen, dass eine Variable "sicher" ist und nicht entkommen muss.
Wie kann ich dasselbe in Pyramide / Chamäleon tun?
Lösung
Chamäleon basiert auf dem Zope -Seitenvorlagen Bibliothek. Wenn Sie also die Chamäleon -Dokumentation fehlen, möchten Sie möglicherweise die ZPT -Dokumente überprüfen.
In jedem Fall gibt es zwei wichtige Möglichkeiten, dies zu tun. Wenn Sie mithilfe eines TAL: Ersatzs oder Tal: Content -Tag -Attributs eingesetzt werden, können Sie a verwenden "Struktur". Dies geschieht durch Putschen structure
Zu Beginn der Zeichenfolge, gefolgt von einem Raum und schließlich dem Namen der Vorlagenvariablen, die Sie rendern möchten. Im Folgenden wird ein Beispiel angezeigt:
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>')
Wenn Sie die Funktionen von tal: Ersetzen oder TAL: Inhaltsfunktionen nicht verwenden möchten, müssen Sie Ihre Zeichenfolge in ein Objekt einwickeln, das der Chameleon -Renderer nicht entkommen wird (dh es hat eine __html__
Methode, die zurückgibt, was die Zeichenfolge aussehen soll). Normalerweise bedeutet dies, wie unten gezeigt eine "wörtliche" Klasse erstellt:
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>'))
Andere Tipps
Chameleon erlaubt auch $ {struktur: markup}.