【问题标题】:Incorporating dictionary elements within Jinja2 If/elif statement在 Jinja2 If/elif 语句中加入字典元素
【发布时间】:2019-04-29 17:30:02
【问题描述】:

我在使用 Jinja2 呈现字典数据时遇到问题。

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

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

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

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>

感谢您的帮助!

【问题讨论】:

  • 您没有显示jinja 循环...{% if cinfo['cbs'] != "" %} 没有与您的代码相关的上下文。您没有cbs 密钥。
  • 我在帖子中定义了cbs 的含义——它是一个存储用户输入数据的字典——如果用户不输入文本,它应该包含一个空白字符串。 if 语句本身位于一个相当大的 HTML 表中,而不是循环
  • 要么我快失明了,要么你没有在帖子中定义cbs
  • cinfo['cbs'] 是我的意思——对不起。无论哪种方式,我都能够在不同的测试中呈现 cinfo['cbs'],但 pdata 是不显示的字典
  • 您已经展示了一些要发送回去进行渲染的东西,但我无法将这些部分组合在一起。我认为这需要澄清。

标签: python html python-3.x jinja2


【解决方案1】:

试试 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 %}

【讨论】:

  • 抱歉 - 我尝试使用“.”访问 dict 内容但收到以下错误:jinja2.exceptions.TemplateSyntaxError: expected token 'end of statement block', got '_Size'
猜你喜欢
  • 1970-01-01
  • 2014-03-28
  • 1970-01-01
  • 2010-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
相关资源
最近更新 更多