擅长:python、mysql、java
<p>您可以指定python代码行,这些代码应该包含在模块的顶部,这些代码将从mako模板创建。这是为了做这件事。由于mako模板真正翻译成python模块,因此这几行导入的任何名称都可以作为模板中的名称使用。过滤器只是接受字符串并返回新字符串(或unicode)的函数。在</p>
<p>您可以在金字塔项目中添加一个特殊的模块来包含这样的函数,例如<code>mako_imports.py</code></p>
<pre><code># mako_imports.py
from markdown import markdown
def remove_all_a(text):
# just a useless example for when you want to do
# something different with a custom function
return text.replace('a', '')
</code></pre>
<p>现在,要包含这些函数,请在配置文件(<code>development.ini</code>,<code>production.ini</code>,<code>mako.</code>部分添加以下内容:</p>
^{pr2}$
<p>您需要显式地指定导入,因为那里不支持<code>from ... import *</code>。在</p>
<p>现在您应该能够在mako模板中执行以下操作:</p>
<pre><code><div class="main-content">
${page_content | n,markdown }
</div>
<div class="disfunct-main-content">
${page_content | remove_all_a }
</div>
</code></pre>
<p>你应该得到呈现的降价处理(当然,没有任何恶意html的过滤——如果需要的话,一定要注意!)。需要额外的<code>n</code>过滤器,因为默认情况下mako将转义创建的html。在</p>
<p><s>我认为必须有一种方法将.ini文件中的部分移到程序代码中(例如,在应用程序的<code>main()</code>函数中),但我还没有找到答案。</s></p>
<p><em>编辑:有一种方法,请参阅接受的答案。</em></p>