【问题标题】:How to use print function with Mako templates如何在 Mako 模板中使用打印功能
【发布时间】:2014-03-07 17:48:12
【问题描述】:

这是我的问题:

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

【问题讨论】:

    标签: python templates cherrypy mako


    【解决方案1】:

    看起来你只是输入了你想要的文本而没有打印命令......

    <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

    希望这会有所帮助!

    【讨论】:

    • 感谢您的回答,我已经尝试过了,但没有成功
    【解决方案2】:

    您应该使用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 将输出发送到标准输出,而不是你的 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)
    ]
    

    【讨论】:

      【解决方案3】:

      您可以打印到context 对象:

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

      【讨论】:

        【解决方案4】:
        <%
            context.write("Hai")
        %>
        

        【讨论】:

          猜你喜欢
          • 2011-05-02
          • 2015-06-29
          • 2011-01-22
          • 1970-01-01
          • 2014-09-29
          • 2019-07-20
          • 1970-01-01
          • 2011-10-14
          • 2012-01-01
          相关资源
          最近更新 更多