Mako过滤器放在哪里
Where to put Mako filters
我写了一个添加 HTML 换行符的 Mako 过滤器:
<%!
def makelinebreaks(text):
return text.replace("\r", "<br/>")
%>
如果我把它放在模板文件中就可以了。但是如果我想在多个模板中使用它,那么我必须重新声明它。有没有我可以放置代码的文件,以便过滤器在我所有模板的范围内,而不是作为脚本放入它使用的每个模板中?
假设您在名为 filters.mako
的模板中定义了此过滤器。然后在希望使用过滤器的模板中,只需使用 <%namespace>
标签
导入 filters.mako
<%namespace file="filters.mako" import="*"/>
这相当于 Python 中的 from filters import *
结构。您也可以使用
只导入您想要的名称
<%namespace file="filters.mako" import="makelinebreaks"/>
或者,对于等同于 import filters
的东西,使用:
<%namespace file="filters.mako" name="filters"/>
现在您可以将过滤器用作 filters. makelinebreaks
${something | filters.makelinebreaks}
我写了一个添加 HTML 换行符的 Mako 过滤器:
<%!
def makelinebreaks(text):
return text.replace("\r", "<br/>")
%>
如果我把它放在模板文件中就可以了。但是如果我想在多个模板中使用它,那么我必须重新声明它。有没有我可以放置代码的文件,以便过滤器在我所有模板的范围内,而不是作为脚本放入它使用的每个模板中?
假设您在名为 filters.mako
的模板中定义了此过滤器。然后在希望使用过滤器的模板中,只需使用 <%namespace>
标签
filters.mako
<%namespace file="filters.mako" import="*"/>
这相当于 Python 中的 from filters import *
结构。您也可以使用
<%namespace file="filters.mako" import="makelinebreaks"/>
或者,对于等同于 import filters
的东西,使用:
<%namespace file="filters.mako" name="filters"/>
现在您可以将过滤器用作 filters. makelinebreaks
${something | filters.makelinebreaks}