首页 > 解决方案 > 如何使用数据中的键值检查条件并显示所有嵌套值(如果存在)

问题描述

我有示例 mongo 文档数据(供参考):

传递给模板的 <code>data</code> 对象是这样的

从观点来看:

data=wordscollection.find({'word':word})
return render_template('wordsearch.html',data=data)

在模板中,我仅将其用于第一个索引,并且不检查示例或同义词是否为空:

{% for word in data %}
    <tr>Meaning :{{  word['meanings'][0]['def'] }}</tr><br>
    <tr>Example :{{  word['meanings'][0]['example'] }}</tr><br>
    <tr>Parts Of Speech :{{  word['meanings'][0]['speech_part'] }}</tr>
{% endfor %}

输出为:

在此处输入图像描述

1)如何将所有索引结果显示为

meaning1: def1
speechpart1: speech_part1
example1:                    //2)writing condition for this to show if exits
synonym:                      //2)writing condition for this to show if exits

Meaning2: def2
........
........

我已经尝试了 2) 的运气,如下所示:

      {% for word in data if word['meanings'][0]['example'] %}

但这也不起作用

任何帮助表示赞赏,TIA

标签: pythonflaskjinja2

解决方案


您还必须使用嵌套的 for 循环进行迭代meanings并在之前检查空值

{% for word in data %}
    {% for meaning in word['meanings'] %}
        <tr>Meaning :{{  meaning['def'] }}</tr><br>
        {% if meaning['example'] %}
            <tr>Example :{{  meaning['example'] }}</tr><br>
        {% endif %}
        {% if meaning['speech_part'] %}
            <tr>Parts Of Speech :{{  meaning['speech_part'] }}</tr>
        {% endif %}
    {% endfor %}
{% endfor %}

推荐阅读