我正在寻找一种用于设置一些常见项目定义的习惯用法,以便每次我在mako模板上调用render()
时,这些项目都将被添加到模板中可用的参数中,而不必将其包含在其中。每次render()
的参数。
http://docs.makotemplates.org/en/latest/usage.html处的示例表明,我应该寻找的位置以某种方式设置了一些主Context
定义或其他内容,或者可能是合并了两种上下文的方式:
from mako.template import Template
from mako.runtime import Context
from StringIO import StringIO
mytemplate = Template("hello, ${name}!")
buf = StringIO()
ctx = Context(buf, name="jack")
mytemplate.render_context(ctx)
print(buf.getvalue())
我找不到明确显示此操作示例的任何内容,并且在dir(Context)
中四处浏览并没有使您想到任何事情。这是一件简单的事情,而我只是忽略了显而易见的事情吗?还是为此有一个标准的习惯用法?
谢谢!
更新:我想一种方法是将** kwargs显式地附加到对render()的每次调用中,这并不坏,因为它是显式的:
template = self.template_lookup.get_template("index.mako.html")
return template.render(var1=val1, var2=val2, **common_vars)
对于是否有办法“完全预定义”此类项目仍然感到好奇。