在没有 "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讨论这个。
祝你好运!
假设我想做一个简单的循环,我会花一些时间来执行它。
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讨论这个。
祝你好运!