【问题标题】:django - Use loop variables as a dictionary keydjango - 使用循环变量作为字典键
【发布时间】:2017-04-11 09:17:07
【问题描述】:

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

{% 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 %}

它给了我这个错误,

无法解析来自“mydict.{{rsim.xxx_fk.xxx_code_char}}”的余数:“{{rsim.xxx_fk.xxx_code_char}}”

我不理解这种行为,因为如果我将 {% for rsim2,couples2 in mydict.{{rsim.pdb_fk.pdb_code_char}}%} 行硬编码为 {% for rsim2,couples2 in mydict.toto %} 它可以工作......我的意思是,我该如何处理这个想法?

我真的需要这种循环结构,因为我只想为特定的“rsim,couple”元组遍历“rsim2,couples2”元组。换句话说,“rsim2,couples2”是与“rsim,couples”链接的额外数据。有什么比使用键的字典更好的解决方案?

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

谢谢!

【问题讨论】:

  • 有什么不明白的?当您已经在模板标签中时,您不能使用 {{ }} 变量语法。
  • 不理解,我的意思是,我怎么能做类似的事情。谢谢@DanielRoseman
  • @MateuszKnapczyk 我在问我的问题之前看到了它,我想要其他(更好的?)解决方案而不是编写自定义模板过滤器。您可以看到其他人对您的链接的回答并未回答原始问题。

标签: python html django templates dictionary


【解决方案1】:

一般答案是

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

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

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

【讨论】:

  • 一直在找这样的答案,完美,我去查一下。谢谢
猜你喜欢
  • 2011-11-25
  • 2023-03-19
  • 2015-11-25
  • 1970-01-01
  • 2021-07-07
  • 1970-01-01
  • 2018-10-30
  • 1970-01-01
相关资源
最近更新 更多