这是我认为会工作: 我有一个字典索引的游戏和包含gameSlots 确认:{{gameSlot.game.name}}是有效的(和其他gameSlot.game .X性能也精) 证实:assignedGameSlotsInMyGames有人拿着{游戏:[gameSlot1,gameSlot1]} 但是:{%用于gameSlot2在assignedGameSlotsInMyGames [gameSlot.game]%}没有迭代Python(2.7)字典Jinja混淆
我做明显的错误? (如果需要,我可以发布更完整的代码 - 我用一个非常丑陋的替代方法替换了代码,但很乐意将它带回来显示测试结果等)。
更多细节添加....
数据是: assignedGameSlotsInMyGames包含一个游戏(名为“后来”),其中有两个赋予的gameSlots。
解决方法打印这些gameSlots的内容:
{% for game, gameSlots in assignedGameSlotsInMyGames.iteritems() %}
{% if gameSlot.game.name == game.name %}
{% for gameSlot2 in gameSlots %}
<tr>
<td> {{gameSlot2.user.email}} </td>
<td> {{gameSlot2.gameCharacter.characterType}} </td>
</tr>
{% endfor %}
{% endif %}
{% endfor %}
附加说明:原因有:
if gameSlot.game.name == game.name
的是,我通过属于特定的所有gameSlots迭代用户。当我显示那个gameSlot时,我想包含关于该gameSlot引用的游戏的其他信息。由于我直接引用该游戏的尝试(下文)无效,因此我循环遍历所有游戏并使用与“外部循环”中当前游戏相匹配的游戏(跛脚,是 - 这就是为什么我发布该问题的原因)。注意:对于我正在测试的示例,只有一个名称为“Later”的游戏。
有一个外部循环遍历所有gameSlot.games - 唯一的迭代是当gameSlot.game.name ==“Later”时。而所有这些额外的循环,我想我可以使用:
{% for gameSlot2 in assignedGameSlotsInMyGames[gameSlot.game] %}
<tr><td>Iteration</td></tr>
{% endfor %}
我在想,既然assignedGameSlotsInMyGames是一个游戏对象与被gameSlots值索引的字典,这应该工作。但是没有迭代打印。的
调试代码:
<tr><td colspan="6">TestCode - gameSlot.game = {{gameSlot.game}}, assignedGameSlotsInMyGames[gameSlot.game] = {{assignedGameSlotsInMyGames[gameSlot.game]}} </td></tr>
<tr><td colspan="6">TestCode - gameSlot.game.name = {{gameSlot.game.name}}, assignedGameSlotsInMyGames = {{assignedGameSlotsInMyGames}}</td></tr>
<tr><td colspan="6">Test from Ellochka - assignedGameSlotsInMyGames.game = {{assignedGameSlotsInMyGames.game}}</td></tr>
具有输出:
TestCode - gameSlot.game = , assignedGameSlotsInMyGames[gameSlot.game] =
TestCode - gameSlot.game.name = Later, assignedGameSlotsInMyGames = {: [, ]}
Test from Ellochka - assignedGameSlotsInMyGames.game =
这是我与Jinja2的模板(和Python),所以我可能会很困惑第一次经历。
我试过,但它也没有迭代。我认为,既然assignedGameSlotsInMyGames是一个字典,我需要使用[]语法。上面还提供了有关代码的更多细节。谢谢! – 2013-03-11 20:10:04
@ RichardBerger,我纠正了我的答案。 – 2013-03-12 17:07:45
感谢您的额外信息。我在附加说明中回答了您的问题(添加到原文中)。即使gameSlot.game在assignedGameSlotsInMyGame字典中有一个有效的游戏,那么不工作的部分是{%for assignedGameSlotsInMyGames [gameSlot.game]%}中的gameSlot2。也许我对Jinja2期待太多? – 2013-03-12 20:48:54