Wenn Sie die Hilfsfunktion der Vorlagen-Engine definieren, möchten Sie sie möglicherweise direkt von außerhalb der Vorlage verwenden. Verwenden Sie für mako get_def.
$ pip install mako
Die Methode zum direkten Angeben einer Zeichenfolge und zum Rendern lautet wie folgt.
# -*- coding:utf-8 -*-
from mako.template import Template
template = Template(u"""\
hello ${name}
""")
print(template.render(name="world"))
# hello world
Die Methode zum Aufrufen der an einem anderen Ort definierten Hilfsfunktion von einem anderen Ort (show.html) lautet wie folgt. Wenn die Dateistruktur wie folgt ist.
$ tree
.
|-- greeting.html
|-- hello_with_otherfile.py
`-- show.html
Registrieren Sie den Pfad der obersten Ebene, der bei der Suche nach einer Vorlage in der Vorlagensuche verwendet wird. Und es ruft Hallo von greeting.html über die show.html-Vorlage auf.
hello_with_otherfile.py
# -*- coding:utf-8 -*-
from mako.lookup import TemplateLookup
import os.path
here = os.path.abspath(os.path.dirname(__file__))
lookup = TemplateLookup([here])
template = lookup.get_template("show.html")
print(template.render(name="world"))
# hello world
show.html
<%namespace file="./greeting.html" name="g"/>
${g.hello(name)}
greeting.html
<%def name="hello(name)">
hello ${name}
</%def>
Endlich das Hauptthema. Verwendung der in .mako definierten Renderfunktion direkt in mako. In diesem Fall ist die in greeting.html definierte Hallo-Funktion die Funktion, die Sie verwenden möchten. Dies verwendet get_def wie folgt.
# -*- coding:utf-8 -*-
from mako.lookup import TemplateLookup
import os.path
here = os.path.abspath(os.path.dirname(__file__))
lookup = TemplateLookup([here])
hello = lookup.get_template("greeting.html").get_def("hello")
print(hello.render("world"))
# hello world
Recommended Posts