{% for dispN0, tableDataSet0 in tabulatedTable.items %}
    {% for dispN in orderChanels %}
        {% for antenaName, antenaLevel in tableDataSet0.{{dispN}}.items %}
             <td>{{antenaName}}</td>
        {% endfor %}
    {% endfor %}
{% endfor %}

这里 {{dispN}} 是整数数字,例如36、42等。如果我给 tableDataSet0.36.items ,它可以正常工作。但我需要在第36个位置乘以倍数。

最佳答案

您需要编写自己的template filter来查找字典或对象的值:

在您的应用程序的utils.py文件夹中创建一个类似于templatetags的文件,如下所示:

app_dir/
├── __init__.py
├── models.py
  ...
├── templatetags/
│   ├── __init__.py  # required for python 2.7
│   └── utils.py
  ...
└── views.py

并填写以下内容:
from django import template

register = template.Library()

@register.filter
def lookup(value, key):
    return value.get(key, [])

现在,您可以像下面这样在模板中使用此过滤器:
{% load utils %}

{% for dispN0, tableDataSet0 in tabulatedTable.items %}
    {% for dispN in orderChanels %}

        {% with tableData = tableDataSet0|lookup:dispN %}
            {% for antenaName, antenaLevel in tableData.items %}
                <td>{{antenaName}}</td>
            {% endfor %}
        {% endwith %}

    {% endfor %}
{% endfor %}

进一步了解
  • Custom template tags and filters
  • the {% with %} templatetag
  • 关于python - Django模板中的字典查找,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44391451/

    10-13 02:50