Kid*_*ddo 2 python jinja2 flask
所以我将数据输出到我的模板如下(该函数将检查每个数据(一个整数)是否是我的计算结果,产生真/假,然后产生正在计算的项目。
@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()))
Run Code Online (Sandbox Code Playgroud)
在 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>
Run Code Online (Sandbox Code Playgroud)
我的目的是,如果状态为 True,那么结果(如 CSS 中所述)将为绿色,否则为灰色。
不知何故,代码不起作用,因为它说“TypeError:'bool'对象不可迭代”。
我是 Flask 和 jinja2 的新手,我该如何解决这个问题?
非常感谢
您需要生成元组,而不是生成布尔值,然后分别生成项目:
def get_data():
for item in generate_list():
yield isResult(item), item
Run Code Online (Sandbox Code Playgroud)
由于isResult()已经返回一个布尔值,因此这里不需要if/else测试。
您可以将模板简化为:
<div id="resultfield">
{% for state, id in data %}
<div class="{% if state %}passed{% else %}failed{% endif %}">{{ id }}:{{ state }}</div>
{% endfor %}
</div>
Run Code Online (Sandbox Code Playgroud)