Доступ к словарям с учетом атрибутов шаблона django? - PullRequest
0 голосов
/ 31 декабря 2018

Так что моя проблема в том, что мне нужно перебирать словарь по атрибуту, который является значением цикла for.Например, у меня есть словарь с именем my_dictionary, который повторяется циклом for в шаблоне django с атрибутом, называемым q.Мне нужен доступ к этому словарю с помощью атрибута q.Я пробовал с {{my_dictionary.q}}, {{my_dictionary.{{q}} }}, но ни один из них не работал.Что я могу сделать?Я думаю, это должно быть похоже на Python my_dictionary[q].Спасибо.

Обновление: На самом деле, q не имеет ничего общего с my_dictionary.Предположим, что q - это каждый элемент списка [1,2,3], а my_dictionary - словарь следующей формы: {1: ['a','b','c'], 2:['a'], 3:['c']}.Поэтому я пытаюсь получить доступ к каждому значению словаря по значениям первого списка [1,2,3].

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Вы можете написать собственный шаблонный фильтр:

from django.template.defaulttags import register
register = Library()
...
@register.filter
def get_item(dictionary, key):
    # use .get so that if the key does not exist a KeyError will be raised
    return dictionary.get(key)

использование в шаблонах:

{% for q, value in my_dictionary.items %}
    {{ my_dictionary.items|get_item:<key_variable_here> }}
{% endfor %}
0 голосов
/ 31 декабря 2018

Предположим, вы возвращаете словарь из представления в шаблон.Скажите, что ваше имя словаря my_dictionary, тогда в шаблоне вам нужно сделать так:

{% for q in my_dictionary %}
    <p> {{ q.your_dictionary_key_name }} </p>
{% endfor %}

для перебора элементов списка в словаре

{% for key, value in dictionary.items %}
    <li><a href="{{key}}">{{value}}</a></li>
{% endfor %}
...