在Jinja2 If / elif语句中合并字典元素

时间:2018-11-27 21:51:37

标签: python html python-3.x jinja2

我在用Jinja2渲染字典数据时遇到麻烦。

我有两个不同的字典变量。 cinfo['cbs']保留来自用户输入的数据。我能够渲染该数据。另一个位于pdata内,尽管我无法呈现此数据。

文本将呈现在".leftcell" td下,但是".rightcell" td上的数据显示为空。如果两个字典变量都包含空白字符串,我希望小精灵完全跳过该块。

对于上下文,这是我的流命令:

template.stream(cinfo=cinfo,  pdata = pdata)

以下是“ pdata”字典的数据结构:

pdata = {'Building Size': {'Data': '28,106 SF'}}

以下是我的jinja2代码:

      <!DOCTYPE html>
<html lang="en">

<body lang="en-US">
  <div id="propertyinfo">
    <table id="pitable" cellspacing="0">
      <tbody>


        {% if cinfo['cbs'] != "" %}
        <tr>
          <td class="leftcell">
            Building Size
          </td>
          <td class="rightcell">
            {{cinfo['cbs']}}
          </td>
        </tr>
        {% elif pdata["Building Size"]["Data"] != "" %}
        <tr>
          <td class="leftcell">
            Building Size
          </td>
          <td class="rightcell">
            {{pdata["Building Size"]["Data"]}}
          </td>
        </tr>
        {% endif %}

      </tbody>
    </table>
  </div>
</body>

</html>

感谢您的协助!

1 个答案:

答案 0 :(得分:0)

尝试 pdata如下,只是为了避免空格

pdata = {'Building_Size': {'Data': '28,106 SF'}}

并使用“。”访问字典内容。

  {% if cinfo.cbs != "" %}
  <tr>
                <td class="leftcell">
                    Building Size
                </td>
                <td class="rightcell">
                    {{cinfo.cbs}}
                </td>
            </tr>
  {% elif pdata.Building_Size.Data != "" %}
  <tr>
                <td class="leftcell">
                    Building Size
                </td>
                <td class="rightcell">
                    {{pdata.Building_Size.Data}}
                </td>
            </tr>
  {% endif %}