我正在使用mako模板构建一个金字塔应用程序。在
如何使函数在所有的mako模板中都可以访问而不必在每个模板中<%namespace />
一个文件?在
并不是说添加namespace标记本身就不好,但是在本例中,我尝试添加一个过滤器函数(用于降价处理)。它不属于模板文件,但更像是一个库,属于.py文件。在
我想在我的mako模板中写下:
<div class="main-content">
{page_content | markdown }
</div>
声明page_content
包含降价代码,应按降价处理。在
Tags:
您可以指定python代码行,这些代码应该包含在模块的顶部,这些代码将从mako模板创建。这是为了做这件事。由于mako模板真正翻译成python模块,因此这几行导入的任何名称都可以作为模板中的名称使用。过滤器只是接受字符串并返回新字符串(或unicode)的函数。在
您可以在金字塔项目中添加一个特殊的模块来包含这样的函数,例如
mako_imports.py
现在,要包含这些函数,请在配置文件(
^{pr2}$development.ini
,production.ini
,mako.
部分添加以下内容:您需要显式地指定导入,因为那里不支持
from ... import *
。在现在您应该能够在mako模板中执行以下操作:
你应该得到呈现的降价处理(当然,没有任何恶意html的过滤——如果需要的话,一定要注意!)。需要额外的
n
过滤器,因为默认情况下mako将转义创建的html。在我认为必须有一种方法将.ini文件中的部分移到程序代码中(例如,在应用程序的main()
函数中),但我还没有找到答案。编辑:有一种方法,请参阅接受的答案。
根据@kratenko的请求,您可以使用BeforeRender订阅服务器作为详细的here
您可以在视图中添加以下订阅服务器
在你的mako模板中,这样称呼它:
^{pr2}$相关问题 更多 >
编程相关推荐