当我尝试运行folliwhing flask功能(路线)时,在我的页面上出现此错误<generator object inner at 0x7f2ad7874050>
:
@app.route('/siteON', methods=['GET', 'POST'])
def siteon():
def inner():
proc = subprocess.Popen(
['/root/site_toggle/flaskr/testON.sh'],
shell=True,
stdout=subprocess.PIPE
)
for line in iter(proc.stdout.readline,''):
time.sleep(1)
yield line.rstrip() + '<br/>\n'
output = inner ()
return render_template('layout.html', ON_output=output)
这是我的HTML
<input type="button" name="lien2" value="Turn OFF site"
onclick="self.location.href='http://10.10.10.30:5000/siteOFF'" style="background-color:#1ab171"
style="color:white; font-weight:bold"onclick>
<p>{{ ON_output }}</p>
我希望运行按钮并在同一个烧瓶页面上显示输出,而不在新页面上输出输出。 在此先感谢您的帮助
答案 0 :(得分:3)
这不是错误,它是生成器对象的字符串表示形式,这是yield
导致函数创建的结果。
您似乎尝试使用生成器和sleep()
在页面中随时间显示内容,但这不是模板的工作原理 - 它们是一次性完成的一种渲染。如果您希望在页面中随着时间的推移显示内容,则可能需要使用某种形式的客户端JavaScript来获取新的更新。