Mako:在上下文中使用预定义/默认项目进行渲染吗?

时间:2018-07-30 21:52:18

标签: python templates mako defaults

我正在寻找一种用于设置一些常见项目定义的习惯用法,以便每次我在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)

对于是否有办法“完全预定义”此类项目仍然感到好奇。

0 个答案:

没有答案