Синтаксис шаблона Django для вложенного словарного элемента с использованием имен переменных - PullRequest
0 голосов
/ 01 июля 2018

На странице шаблона Django я пытаюсь получить доступ к значению во вложенном словаре.

books = 
 { 
   1: { 1: 'Alice', 2: 'Bob', 3: 'Marta' }, 
   2: { 1: 'Alice', 3: 'Marta' }, 
   3: { 1: 'Alice', 2: 'Bob' }, 
 }

Где-то на моей странице, у меня есть эти две переменные

info.id = 1
detail.id = 2

Я хочу напечатать (если он существует) элемент books[1][2], или, другими словами, books[info.id][detail.id]. Я столкнулся с проблемой, потому что я не мог получить доступ к этой вложенной переменной. Это решено здесь . Однако предлагаемое решение состояло в том, чтобы получить доступ к вложенным элементам словаря, используя точечную запись. Но проблема в том, что это не работает при использовании переменных. Используя эту логику, я бы сделал:

{{ books.info.id.detail.id }}

Но это не дает никакого результата. Как мне подходить к ситуации при использовании переменных для доступа к элементам в словаре? Обратите внимание, что сам предмет может существовать или не существовать, поэтому я сталкиваюсь с проблемами, используя books[info.id][detail.id]

1 Ответ

0 голосов
/ 01 июля 2018

Вы не можете сделать это в шаблоне напрямую. Вам нужно будет использовать пользовательский тег шаблона . Это будет работать:

@register.simple_tag
def nested_get(dct, key1, key2):
    return dct.get(key1, {}).get(key2)

Теперь вы можете использовать его в шаблоне:

{% load my_tags_library %}
{% nested_get books item.id detail.id %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...