zr.*_*zr. 13 python template-engine mako
我发现自己在我的mako代码中的所有%def上重复了相同的过滤器属性:
<%def name="mydef1(a,b)" filter="trim">
# something something something
</%def>
...
<%def name="mydef2(b)" filter="trim">
# something something something
</%def>
Run Code Online (Sandbox Code Playgroud)
有没有办法为所有%def指定一组默认过滤器,并避免在我的代码中重复'filter ="trim"'?
我注意到有一个选项可以为表达式过滤器指定默认过滤器,但我找不到类似于%def的东西.
您可以使用以下几种解决方法:
default_filters
如果您可以以
编程方式导入defs
或从文件加载它们,则可以使用该参数。您可以将 def 嵌套在父 def 中,并将过滤应用于父 def(我当前的计算机上没有 mako,所以我无法发短信,但我 99% 确定这有效,请给我打电话如果我错了,请出去。)
<%def name="filterdefs()" filter="trim">
<%def name="mydef1(a,b)">
# something something something
</%def>
<%def name="mydef2(b)">
# something something something
</%def>
</def>
Run Code Online (Sandbox Code Playgroud)最后,您可以buffer_filters
按照评论中的建议使用。但是,除了添加之外,buffered="True"
您还可以调用def
withcapture(myDef)
而不是myDef()