Шаблон Django Доступ к значениям словаря с переменной - PullRequest
0 голосов
/ 17 июня 2019

У меня есть список с IP-адресами.У меня также есть вложенный словарь, который использует эти адреса в качестве ключей.Например:

my_list = ['1.2.3.4', '8.8.8.8']

my_dic = {'data': {'1.2.3.4': 'My First Data', '8.8.8.8': 'My Second Data'}}

В моем шаблоне я пытаюсь сделать следующее:

for each in my_list:
    print(my_dic['data'][each])

Все работает хорошо, пока я не нажму эту клавишу each.Поэтому, если я просто напечатаю my_dic или my_dic[data], все будет работать правильно.Но когда я добавляю индекс each, на веб-странице ничего не появляется

Я напечатал each независимо, поэтому я знаю, что он работает правильно.Это также работает, как и ожидалось, когда я запускаю цикл в моей IDE, поэтому я знаю, что логика верна.

В Django мой код выглядит следующим образом:

{% if my_dic.data %}
    {% for each in my_list %}
      <p>{{ my_dic.data.each }}</p>
    {% endfor %}
{% endif %}

Я новичок в Django, поэтому не уверен, что пропускаю что-то глупое.Кто-нибудь знает, что мне здесь не хватает?

РЕДАКТИРОВАТЬ Нашел дубликат ЗДЕСЬ , который охватывает мою проблему.На ту же проблему указал Вишну Кс.

1 Ответ

0 голосов
/ 17 июня 2019

Проблема в том, что при попытке доступа к data.each Django будет искать данные ["каждому"], а не данные [каждого]. Так как в my_dic нет ключа с именем "каждый", ничего не будет напечатано.

Если вы хотите получить доступ к значению данных [каждого] внутри шаблона, вам нужно написать собственный фильтр шаблона.

from django.template.defaulttags import register

@register.filter
def get_item(dictionary, key):
    return dictionary.get(key)

Затем измените код шаблона Django на этот.

{% if my_dic.data %}
    {% for each in my_list %}
      <p>{{ my_dic.data|get_item:each }}</p>
    {% endfor %}
{% endif %}

См. Шаблон Django, как найти значение словаря с переменной для получения более подробной информации.

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