繁体   English   中英

如何在Mako模板上使用打印功能

[英]How to use print function with Mako templates

这是我的问题:

我定义了一个名为“ 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。

您应该使用def mako标签,它会使生活更轻松。

<%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函数一样,只需确保它返回某些内容(打印会将输出发送到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)
]
<%
    context.write("Hai")
%>

看起来您只需要输入想要的文本,而无需使用print命令...

<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

希望这可以帮助!

您可以打印到context对象:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM