Mako:向父模板和子模板传递变量
目标:希望在基础模板和子模板中都能访问到myargs这个变量。目前我只能在其中一个模板中访问到它。
调用:
child.render(myargs={'a':2, b:'5'})
基础片段:
<%page args="myargs=None, **kwargs"/>
% if myargs['a']:
a is: ${myargs['a']}
% endif
${self.body(myargs=myargs)}
子片段版本1:
<%page args="myargs=None, **kwargs"/>
<%inherit file="/base.html" />
% if myargs['b']:
b is: ${myargs['b']}
% endif
子片段版本2:
<%page args="myargs=None, **kwargs"/>
<%inherit file="/base.html" />
<%def name="body()">
% if myargs['b']:
b is: ${myargs['b']}
% endif
</%def>
使用子版本1时,子模板报错,因为myargs没有定义,而基础模板正常工作。使用子版本2时,基础模板报错,因为myargs没有定义,而子模板正常工作。
这些不是准确的例子,但大致上反映了我的困境。如果有人能解释一下如何在继承链中传递变量,那就太好了。不幸的是,Mako的文档似乎没有涉及这一部分。
1 个回答
3
哈哈,这个解决方案真简单。
结果发现,“页面参数”对这个问题没什么用,实际上它们在某个页面上把“myargs”给覆盖成了“None”,反而造成了问题。其实,关键字变量可以直接从两个文件中访问,不需要用“页面参数”。