django - 使用循环变量作为字典键

时间:2017-04-11 09:17:07

标签: python html django templates dictionary

我在模板中访问特定密钥时遇到了一些问题。这是我的代码:

{% for rsim,couples in zipped_formated_rxnsim_pairedsim %}
    -{{rsim.xxx_fk.xxx_code_char}} #ex : toto
    {% for rsim2,couples2 in mydict.{{rsim.xxx_fk.xxx_code_char}}%}
        <li> {{rsim2}} - {{couples2}}</li>
    {% endfor %}
{% endfor %}

它给了我这个错误,

  

无法解析剩余部分:'{{rsim.xxx_fk.xxx_code_char}}'来自'mydict。{{rsim.xxx_fk.xxx_code_char}}'

我不明白这种行为,因为如果我将行{% for rsim2,couples2 in mydict.{{rsim.pdb_fk.pdb_code_char}}%}硬编码到{% for rsim2,couples2 in mydict.toto %}就行了......我的意思是,我怎么能对这个想法做些什么呢?

我真的需要这个循环结构,因为我想通过“ rsim2,couples2 ”元组仅针对特定的“ rsim,couple ”元组。换句话说,“ rsim2,couples2 ”是与“ rsim,couples ”链接的额外数据。比使用密钥的字典更好的解决方案是什么?

我尝试使用{{with}}标记,添加一个直接用作键的变量,但它不起作用。任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

一般答案

  1. 添加一个帮助方法,以在Python中完成您想要的而不是模板语言。如果在一个模板中,thingy.something引用Django模型实例,通常建议使用此方法。在这里,它似乎没有。

  2. 编写您自己的模板标签或过滤器,或搜索其他人已经写过的合适标签或过滤器。编写这样的模板标签实际上非常简单 - 只需按照Django文档中的示例进行操作即可。 [edit]请参阅问题评论中发布的链接。

  3. 对Django内置的语言使用不同的模板语言。 Django现在支持Jinja2。我不知道这是否可以做你想要的,并且没有使用它的经验。如果以上是Django自己的模板语言唯一的问题,它可能会使用大锤来破解坚果。