所以我将数据输出到我的模板,如下所示(该函数将检查每个数据(一个int)是否为我的计算产生True / False的结果,然后产生正在计算的项目。
@app.route('/', methods=['POST'])
# doing something here
def get_data():
for item in generate_list():
if isResult(item):
yield True
else:
yield False
yield item
return Response(stream_template('result.html', data=get_data()))
在HTML文件中我有:
<div id="resultfield">
{% for state, id in data: %}
{% if state == True %}
<div class='passed'>{{ id }}:{{ state }}</div>
{% else %}
<div class='failed'>{{ id }}:{{ state }}</div>
{% endfor %}
</div>
我的目的是,如果状态为True,那么结果(如CSS中所述)将显示为绿色,否则为灰色。
以某种方式代码不起作用,因为它说“TypeError:'bool'对象不可迭代”。
我怎么能解决这个问题,因为我是对flask和jinja2的新手?
非常感谢
答案 0 :(得分:4)
你需要产生元组,而不是产生布尔值,然后单独的项目:
def get_data():
for item in generate_list():
yield isResult(item), item
由于isResult()
已经返回布尔值,因此此处无需进行if
/ else
测试。
您可以将模板简化为:
<div id="resultfield">
{% for state, id in data %}
<div class="{% if state %}passed{% else %}failed{% endif %}">{{ id }}:{{ state }}</div>
{% endfor %}
</div>