Django模板标签:获取键,字典的值

时间:2019-03-20 08:04:44

标签: python django django-templates django-tagging

我想访问下面字典的键,值并将它们输出到Django模板文件中。但是,我无法获得价值。它引发了一个错误。如何访问每个字典key及其值(option_nameanswerimg_option)?


词典

{u'options': [{235: <OptionForm bound=False, valid=Unknown, fields=(option_name;answer;img_option)>},
              {236: <OptionForm bound=False, valid=Unknown, fields=(option_name;answer;img_option)>}, 
              {237: <OptionForm bound=False, valid=Unknown, fields=(option_name;answer;img_option)>}, 
              {238: <OptionForm bound=False, valid=Unknown, fields=(option_name;answer;img_option)>}]

  }

Django模板

{% for key, option in options.items %}
    <tr class="option_row rowRecord" id="{{key}}">
        <td>{{option[key].option_name}}</td>
        <td>{{option[key].img_option}}</td>
        <td>{{option[key].answer}}</td>
        <td><i class="material-icons option-delete">delete</i></td>
    </tr>
{% endfor %}

引发错误

TemplateSyntaxError: Could not parse the remainder: '[0].option_name' from 'option[0].option_name'

1 个答案:

答案 0 :(得分:1)

肮脏的解决方案(因为您的原始字典具有嵌套的列表和字典):

{% for key, values in options.items %}
    {% for value in values %}
        {% for k, v in value.items %}
            key = {{ k }}
            val = {{ v }}
        {% endfor %}
    {% endfor %}
{% endfor %}

更好的解决方案:

您应该考虑展平字典,以使其更容易遍历。您不需要嵌套的列表和字典。示例:

options = {
    235: <Option ...>,
    236: <Option ...>,
    237: <Option ...>,
    238: <Option ...>,
}

现在,您将可以在一个循环中对其进行循环。