在没有 "return" 的情况下打印到 HTML

Print to HTML without "return"

假设我想做一个简单的循环,我会花一些时间来执行它。

for i in range(0, 100000000000):
    print i

现在,这是我拥有的 Bottle 代码。我想在循环结束之前打印出所有中间输出,如 1,2,3,4...。

import bottle

@bottle.route('/')
def home_page():
    total = 0
    for i in range(0, 100000000000):
        total = i + 0
        print i
    return bottle.template('hello.tpl', {"total": total})

如何在迭代过程中输出 i ?我尝试了 "response" 但它没有用,它仍然必须 return 无论如何。

迭代期间不能将 i 输出到 html。你可以做的是 return 项目列表到你的模板,并在 return HTTP 响应之前呈现它们,正如@Baterson 建议的那样。

如果您需要调试应用程序,请考虑使用 python debugger。 此外,在您的项目上设置 python logging 可以简化对您项目的错误跟踪。

在上面的代码片段中 print 将在您的控制台中显示数据(其中您有 运行 网络服务器,因此如果您需要检查 i 切换到的值是什么控制台,看看那里发生了什么)。

给你的小建议是熟悉一下MVC Design Paradigm,在阅读理解那篇文章之后,它会相当使用 botle.

对您来说更容易

我想你问的是长投票。在使用 Greenlets 的上下文中的 Bottle docs mention this。这是那里的例子:

from gevent import monkey; monkey.patch_all()

from time import sleep
from bottle import route, run

@route('/stream')
def stream():
    yield 'START'
    sleep(3)
    yield 'MIDDLE'
    sleep(5)
    yield 'END'

run(host='0.0.0.0', port=8080, server='gevent')

也有一些other SO questions讨论这个。

祝你好运!