Тег шаблона Django: получение ключа, значение словаря - PullRequest
0 голосов
/ 20 марта 2019

Я хочу получить доступ к ключу, значению приведенного ниже словаря и вывести его в файл шаблона Django.Тем не менее, я не мог получить значение.Это подняло ошибку.Как получить доступ к каждому словарю key и его значениям (option_name, answer, img_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 Ответ

1 голос
/ 20 марта 2019

Грязное решение (потому что ваш исходный диктат имеет вложенный список и дикты):

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

Теперь вы сможете зациклить его в одном цикле.

...