Lorsque vous définissez la fonction d'assistance du moteur de modèle, vous souhaiterez peut-être l'utiliser directement à l'extérieur du modèle. Pour mako, utilisez get_def.
$ pip install mako
La méthode de spécification directe d'une chaîne de caractères et de rendu est la suivante.
# -*- coding:utf-8 -*-
from mako.template import Template
template = Template(u"""\
hello ${name}
""")
print(template.render(name="world"))
# hello world
La méthode pour appeler la fonction d'assistance définie dans un autre endroit à partir d'un autre endroit (show.html) est la suivante. Lorsque la structure du fichier est la suivante.
$ tree
.
|-- greeting.html
|-- hello_with_otherfile.py
`-- show.html
Enregistrez le chemin de niveau supérieur utilisé lors de la recherche d'un modèle dans la recherche de modèle. Et il appelle bonjour de voeux.html via le modèle show.html.
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>
Enfin le sujet principal. Comment utiliser la fonction de rendu définie dans .mako directement dans mako. Dans ce cas, la fonction hello définie dans salutation.html est la fonction que vous souhaitez utiliser. Cela utilise get_def comme suit.
# -*- 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