Почему Джанго не нравится мой словарь? - PullRequest
1 голос
/ 02 февраля 2011

Я новичок в django и отчаянно пытаюсь понять, почему я не могу получить набор объектов словаря для рендеринга.Вот фрагмент шаблона - с некоторыми отпечатками для отладки:

 <ul>
        {% with req.requirement_id as reqid %}
        req.requirement_id: {{ req.requirement_id|pprint }}<br />
        reqid: {{ reqid|pprint }}<br />
        e_quals: {{ e_quals|pprint }}<br />
        e_quals.reqid: {{ e_quals.reqid|pprint }}<br />

        {% for qual in e_quals.reqid %}
          qual.qual_type: {{ qual.qual_type }}
          {% if qual.qual_type == "self" %}
            <li>Only self-endorsements.</li>
          {% endif %}
          {% if qual.qual_type == "other" %}
            <li>No self-endoresements.</li>
          {% endif %}
          {% if qual.qual_type == "hasa" %}
            <li>Endorser must hold an active {{ qual.qual_data }} badge.</li>
          {% endif %}
        {% endfor %}
        {% endwith %}
      </ul>

И вот что я получаю в качестве вывода:

req.requirement_id: u'man_keephead'
reqid: u'man_keephead'
e_quals: {u'man_keephead': [<EndorsementQual: man_keephead_others>, <EndorsementQual: man_keephead_man>], u'man_trustself': [<EndorsementQual: man_trustself_self>], u'man_waiting': [<EndorsementQual: man_waiting_other>]}
e_quals.reqid: ''

Мне действительно кажется,этот reqid и этот словарь e_quals, e_quals.reqid должны создать этот список объектов.Я не уверен, что мне не хватает.

1 Ответ

2 голосов
/ 02 февраля 2011

Вы не можете выполнять такое косвенное разрешение переменных в языке шаблонов Django. Он всегда будет интерпретировать e_quals.req_id как e_quals["req_id"] - то есть как буквальный ключ.

Вам нужно создать простой шаблонный фильтр:

@register.filter
def dict_get(my_dict, key):
    return my_dict.get(key)


{{ e_quals|dict_get:req_id }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...