[英]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.