如何避免在mako%def中重复过滤规范?

时间:2015-07-14 12:47:21

标签: python template-engine mako

我发现自己在我的mako代码中的所有%def上重复了相同的过滤器属性:

[0-9]*

有没有办法为所有%def指定一组默认过滤器,并避免在我的代码中重复'filter =“trim”'?

我注意到有an option to specify default filters for expression filters,但我找不到类似于%def的东西。

1 个答案:

答案 0 :(得分:1)

您可以使用几种解决方法:

  1. 如果没问题,可以使用default_filters参数 importing the defs programmaticallyloading them from a file
  2. 您可以在父def中nest the defs并应用 过滤到父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>
    
  3. 最后,您可以按照建议使用buffer_filters 评论。但是,您可以直接添加buffered="True" 使用capture(myDef)而不是def

  4. 拨打myDef()