Jinja 2条件显示

Jinja 2 conditional display

大家好,我坚持使用 jinja 并寻找在我的前端循环数据的正确方法,有人可以帮助我吗?

我的 json 数据 mongodb

{
    "_id": {
        "$oid": "623492fea76c5404b9f57476"
    },
    "name": "pour ou contre ",
    "created_by": "admin",
    "created_at": {
        "$date": {
            "$numberLong": "1647612670472"
        }
    },
    "subject": "politique"
}

json data

我只想循环 subject == value 那样的房间

{% if current_user.is_authenticated %}
    {% for room in rooms %}
        {% if room.subject == 'politique' %}
            {{ room.room_name }
        {% endif %}
    {% endfor %}
{% endif %}

但是 jinja 显示了我所有的房间元素,我只想显示 subject == "politique" 的房间 我没有找到正确的方法!

有人可以帮助我吗?

您的模板存在一些问题,但我认为这些是拼写错误。你没有展示你实际上是如何加载房间的,我认为问题在于那部分。

下面的代码适合我。请注意,我从字符串加载房间,因为您没有显示如何加载它。

from jinja2 import Template
import json


json_string = """[
    {
        "_id": {
            "$oid": "623492fea76c5404b9f57476"
        },
        "name": "pour ou contre ",
        "created_by": "admin",
        "created_at": {
            "$date": {
                "$numberLong": "1647612670472"
            }
        },
        "subject": "politique"
    },
    {
        "_id": {
            "$oid": "623492fea76c5404b9f57476"
        },
        "name": "no pour ou contre ",
        "created_by": "admin",
        "created_at": {
            "$date": {
                "$numberLong": "1647612670472"
            }
        },
        "subject": "not_politique"
    }
]"""


rooms = json.loads(json_string)
tm = Template("""{% for room in rooms %}
    {% if room.subject == 'politique' %}
       {{ room.name }}
    {% endif %}
{% endfor %}""")

output = tm.render(rooms=rooms)
print(output)

输出

       pour ou contre

我在渲染模板中修复了这个错误的调用,谢谢你的帮助 AKX