Flask - Jinja2 如何在不同的 <div id/class> 中输出

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 的新手,我该如何解决这个问题?

非常感谢

Mar*_*ers 7

您需要生成元组,而不是生成布尔值,然后分别生成项目:

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)