仅在呈现块时显示HTML

时间:2013-03-02 19:00:17

标签: python wsgi mako

我目前正在使用Python开发网页,并使用Mako作为模板引擎。以前我在PHP中使用了Joomla框架。从那里,一个常见的模板技术是检查模块位置是否有要显示的模块,在这种情况下加载一些包装代码(例如包装div),然后在其间插入模块。

对于mako,模块的比较将是<%block />,然后由inherting文件插入。但是,我无法找到一种显示包装代码的简洁方法。

Joomla的例子:

<div>
    <jdoc:include type="modules" name="my_position" style="none" />
</div>

jdoc行等同于<%block name="my_position" />,因为在这两种情况下,内容都会根据实际页面进行替换。现在我的问题是:如果在没有div内容的情况下呈现时,如何优雅地显示包裹block? Mako是否为我提供了一个优雅的解决方案,我只是在俯视?

提前致谢。

编辑:我找到了某种解决方案,但它并不漂亮,所以如果有人能提出更清洁的解决方案,我更愿意这样做:

<%namespace name="layout" file="layout.mako" />
<%block name="my_position">
    <%def name="my_element()">
        ## Actual position content here
    </%def>
    ${layout.render_my_position(my_element)}
</%block>

然后,在layout.mako

<%block name="banner" />
...
<%def name="render_my_position(my_element)">
    <div>
        ${my_element()}
    </div>
</%def>

此解决方案有效,复制粘贴的数量相对较少,而包装div的更改很容易。然而,这仍然不是最佳解决方案,所以也许有人有更好的想法

0 个答案:

没有答案