получить значение словаря по ключу в шаблоне django - PullRequest
0 голосов
/ 05 июня 2018

У меня есть словарь, подобный этому:

myDict = {key1: item1,
          key2: item2}

Как я могу получить item1 , предоставив key1 в шаблоне django и более, если у меня есть вложенный dictкак это:

myDict2 = {key1: {key11: item11,
                  key12: item12},
           key2: {key21: item21,
                  key22: item22}}

например, как я могу получить item22, используя key22

Я знаю, {{ myDict[key1] }} не работает

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Краткий ответ - посмотреть на решение Шаблон Django, как найти значение словаря с переменной , а затем применить фильтр дважды.

{{ myDict2|get_item:"key2"|get_item:"key22"}}

Более длинный ответ(в значительной степени взято из ответа, с которым я связан):

  1. Создать папку template_tags в папке вашего приложения
  2. Создать файл в этой папкеcustom_tags.py
  3. В custom_tags.py есть этот код из другого ответа:
from django.template.defaulttags import register

@register.filter
def get_item(dictionary, key):
    return dictionary.get(key)
В настройках зарегистрируйте свои собственные теги, добавьте библиотеки и оставьте остальные ШАБЛОНЫ в одиночку.
TEMPLATES = [
    {
        ...   
        'OPTIONS': {
            'context_processors': [   
            ],

            'libraries': {
            'custom_tags':'YOURAPP.template_tags.custom_tags'
            }
        },
    },
]
В вашем шаблоне:
{% load custom_tags %}

{{ myDict2|get_item:"key2"|get_item:"key22"}}
0 голосов
/ 05 июня 2018

Как правило, для итерации через dict в шаблоне что-то вроде этого ...

{% for key, value in harvest_data.items %}
    {{ key }} <br>
    {% for key2,value2 in value.items %}
        {{ key2 }} <br>
        {% for key3, value3 in value2.items %}
            {{ key3 }}:{{ value3 }} <br>
        {% endfor %}
    {% endfor %}
{% endfor %}

Что касается вложенного рендеринга dict в шаблонах, я думаю, что здесь есть ответ

Шаблон Django во вложенном словаре

...