Skip to main content
 首页 » 编程设计

python之Mako过滤器放在哪里

2025年05月04日8pengyingh

我写了一个添加 HTML 换行符的 Mako 过滤器:

<%! 
    def makelinebreaks(text): 
        return text.replace("\r", "<br/>") 
%> 

如果我把它放在模板文件中,它就可以工作。但是如果我想在多个模板中使用它,那么我必须重新声明它。有没有我可以放置代码的文件,以便过滤器在我所有模板的范围内,而不是作为脚本放在它使用的每个模板中?

请您参考如下方法:

假设您在名为 filters.mako 的模板中定义了此过滤器.然后在希望使用过滤器的模板中,只需导入 filters.mako使用 <%namespace> 标签

<%namespace file="filters.mako" import="*"/> 

这相当于 from filters import *在 Python 中构建。您也可以只导入您想要的名称

<%namespace file="filters.mako" import="makelinebreaks"/> 

或者,对于等同于 import filters 的东西使用:

<%namespace file="filters.mako" name="filters"/> 

现在您可以将过滤器用作 filters. makelinebreaks

${something | filters.makelinebreaks}