Django 模板 : Dynamic template variable inside another variable

标签 django for-loop variables django-templates

我希望这是有道理的……我正在构建一个加密 Assets 列表页面(简单);但是,在 {% for %} 循环中,我想在变量中包含一个变量。显示代码会更有意义:

Tempalte.html

{% for crypto_asset in objects__list_cryptoAssets %}
   <tr role="row" class="body-row">
      <td role="cell">{{ api_external_prices.bitcoin.usd }}</td>
   </tr>
{% endfor %}

因此 {% for %} 循环获取所有加密 Assets ,然后我可以使用 Django 模板 {{ asset_class.slug }} 获取所有 slug...这里没有什么特别的。这个变量 {{ api_external_prices.bitcoin.usd }} 获取比特币的外部美元价格,{{ api_external_prices.bitcoin.eur }} 欧元价格,等等……这里也没有什么特别的。

这就是问题所在:想法是拥有类似{{ api_external_prices.{{ asset_class.slug }}.usd }}...这样每个加密货币都会有它的自己的价格 FX 正确获取。 变量内部是否可以有一个变量?

最佳答案

有几种实现方法:

模板过滤器

您可以创建一个模板过滤器 api_external_prices,它将 asset_class 和加密类型作为参数并返回值。

语法是链接这个,其中 api_external_prices 是模板过滤器的名称:

{{ asset_class|api_external_prices:"usd" }}

有关此功能的更多信息,请参阅此处:https://docs.djangoproject.com/en/4.0/howto/custom-template-tags/#writing-custom-template-filters

方法

另一种方法是将 api_external_prices 作为 asset_class 对象的方法,它返回一个具有 usd 属性的对象。 api_external_prices 在这里可以只是一个调用中央模块/函数的包装器,但这将使它更容易在模板中使用。

{{ asset_class.api_external_prices.usd }}

第一种方法与您所要求的类似,但我个人更愿意使用第二种方法,因为它可以避免您引入模板过滤器。

关于Django 模板 : Dynamic template variable inside another variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72585990/

相关文章:

python - 如何按照 Django 中包含键的列表的相同顺序在字典中添加数据?

python - 我的代码中的@register.filter

django - 为什么我不能使用 'dumpdata' 管理命令进入调试器?

java - for 循环在第一次迭代中停止

java - 如何将多个 for 循环构造成 if 语句?

java - 如果它们都在同一个包中,是否可以在一个 java 文件中声明数组并在不同的 java 文件中使用它们

python - 从 vars() 和 dict={} 创建的字典有什么区别?

jquery - Bootstrap 模式使用 jQuery Tablesorter 选择错误的项目

for-loop - 字符串 slice 的范围不一致

javascript - 使用 == 运算符检查变量是否为 0/false/null 等以外的值?