我是Jinja的新手,只是想评估它是否能满足我的需要。
假设我有一个元素列表,每个元素都包含键/值对的字典。 我希望Jinja迭代列表中每个元素的块,并使用块内容来打印每个字典的键/值对。
(我说标题中的递归,因为我的实际实现使用递归。虽然迭代它是相同的概念,所以我在这里使用它是为了简单)。
所以,我对此的天真尝试将是这样的(这或多或少是伪代码):
block.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有关吗?
答案 0 :(得分:2)
您的代码对我来说没问题。您已创建块元素列表。对于每个块,您遍历块dict。您可以使用jinja loop.index来呈现“Entry0:”
之类的条目示例(没有标记):
Entry{{ loop.index }}:
{% for key, value in item.iteritems() %}
{{ key }} : {{ value }}
{% endfor %}