【发布时间】:2011-07-14 16:45:13
【问题描述】:
通常,在 Mako 中“导入”命名空间似乎只允许访问 defs。
## base.mako
<%
somevar = ["one", "two", "three"]
%>
<%def name="foo()">Bar</%def>
还有一个导入模板:
## child.mako
<%namespace name="base" file="base.mako" />
${base.foo()} # works
${base.somevar} # fails: no soup for you
在我的用例中,somevar 和 foo 是相关的。我也可以从导入模板中访问somevar,这会很方便。这样做的最佳做法是什么?
【问题讨论】:
-
添加
getSomeVar()函数不是一个选项吗? -
@9000:通常
somevar将是一个任意的python 对象,用作函数或def 的参数,而不仅仅是渲染时输出到模板主体的字符串。对不起,我很抱歉:在这种情况下,我该如何编写/调用 getSomeVar()? -
您可以导入函数 foo,但不能导入普通名称 somevar。您可以在 base 中定义
def getSomeVar(): return somevar,并希望像使用somevar一样使用base.getSomeVar()。