如何使用Mako模板打印功能

时间:2014-02-10 11:52:33

标签: python templates cherrypy mako

继承我的问题:

我定义了一个名为“lorem”的函数,它应该打印出一些文本:

    <div id="mainpage">
        <%
        def lorem():
            for i in range(0,50):
                print("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam")
        %>
        ${lorem()}
    </div>

但它只是在我的控制台上打印此文本,但我想在我的网站上打印。 我使用带有python 3.3的cherrypy和Mako。

4 个答案:

答案 0 :(得分:3)

您应该使用def mako tag,这会让生活更轻松。

<%def name="lorem()">
% for i in range(0,50):
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
% endfor
</%def>
<div id="mainpage">
    ${lorem()}
</div>

编辑:如果你想使用像你一样的标准python函数,你只需要确保它返回一些内容(print将输出发送到stdout,而不是你的mako模板)。

<div id="mainpage">
    <%
    def lorem():
        res = []
        for i in range(0,50):
            res.append("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam")
        return ' '.join(res)
    %>
    ${lorem()}
</div>

或使用列表理解

return ' '.join([
    "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam"
    for i in range(0,50)
]

答案 1 :(得分:1)

<%
    context.write("Hai")
%>

答案 2 :(得分:0)

看起来您只需输入所需的文字而不使用打印命令...

<div id="mainpage">
    <%
    def lorem():
        for i in range(0,50):
            return "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam"
    %>
    ${lorem()}
</div>

http://docs.makotemplates.org/en/latest/defs.html#using-defs

希望这有帮助!

答案 3 :(得分:0)

您可以打印到context对象:

<%
def lorem():
    for i in range(0,50):
        print("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam", file=context)
%>
${lorem()}