【发布时间】: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