0

我是 Jinja 的新手,只是想评估它是否能满足我的需要。

假设我有一个元素列表,每个元素都包含一个键/值对字典。我希望 Jinja 迭代列表中每个元素的块,并使用块内容打印每个字典的键/值对。

(我在标题中说递归是因为我的实际实现使用递归。但迭代是相同的概念,所以为了简单起见,我在这里使用它)。

因此,我对此的天真尝试将是这样的(这或多或少是伪代码):

块.html:

{% extends base.html %}
{% block element %}
    <do some fancy printing with the current dictionary here>
{% endblock %}

base.html:

{% for item in seq %}
    <li>{% block element %}{% endblock %}</li>
{% endfor %}

.py 文件(基于 GoogleAppEngine Jinja 实现):

myDict = { 'seq': [{'keyA0': 'valueA0', 'keyA1': 'valueA1'}, 
                   {'keyB0': 'valueB0', 'keyB1': 'valueB1'}] }


template = JINJA_ENVIRONMENT.get_template('block.html')
self.response.write(template.render(myDict))

我不确定如何构造它来做我想做的事。我希望块的“实例”从列表中获得适当的字典来打印值,以输出如下内容:

Entry0:
keyA0: valueA0
keyA1: valueA1

Entry1:
keyB0: valueB0
keyB1: valueB1

但我不确定如何向每个块传递它需要的数据。Jinja 有可能吗?

4

1 回答 1

2

你的代码对我来说看起来不错。您已经创建了一个块元素列表。对于您遍历块字典的每个块。您可以使用 jinja loop.index 来呈现像“Entry0:”这样的条目

示例(没有标记):

Entry{{ loop.index }}:
{% for key, value in item.iteritems() %}
     {{ key }} : {{ value }}
{% endfor %}
于 2013-06-16T11:03:22.683 回答