我正在将一个应用程序从cgi转移到web.py。我使用cgi中的一条简单的print语句来获得结果并动态打印它们。因此,结果在页面加载完成之前就已经打印出来了。在web.py中,我有一个返回语句,但我不知道如何才能达到同样的效果。
示例cgi代码:
print "<p><b>Displaying Search Results</b></p>"
print "<table>"
cmd = subprocess.Popen(["find", location ,"-name", fileName], stdout=subprocess.PIPE)
for line in cmd.stdout:
tableData=line.rstrip("\n")
tableRow="<tr><td>tableData</td></tr>"
print tableRow
print "</table>"上面的代码将在生成时一次打印一行。如何为web.py编写相同的代码?
发布于 2011-07-18 19:48:11
使用附加的字符串并最终返回:
s = "My page with..."
s += "More data"
for y in x:
s += "And this!"
return s或者产生数据的能力,在http://webpy.org/cookbook/streaming_large_files中描述了一些陷阱,你必须设置一些头文件,你不能混合return和yield,因为你把它变成了生成器。
设置标题的一部分,您将使用:yield "Some more data",类似于您的CGI脚本中的打印。
发布于 2011-07-20 18:41:52
即使您可以通过将print替换为连接和单个返回来简化移植,也可以考虑使用模板引擎(web.py有一个名为Templetor的内置模板引擎)。
将逻辑从表示中分离出来,可以让您更轻松地更改其中一个,而不需要考虑另一个。
https://stackoverflow.com/questions/6732227
复制相似问题