Цикл Django по объекту json

Как просмотреть объект JSON в шаблоне Django?
JSON:

"data": {
 "node-A": {
    "test1A": "val1A",
    "test2A": "val2A",
    "progress": {
        "conf": "conf123A"
        "loc": "loc123A"
        },
    "test3A": "val3A"
    },
 "node-B": {
    "test1B": "val1B",
    "test2B": "val2B",
    "progress": {
        "conf": "conf123B"
        "loc": "loc123B"
        },
    "test3B": "val3B"
    }
}

У меня проблемы с доступом к вложенным значениям "conf" и "lock" внутри "progress". Как я могу получить к ним доступ в шаблоне Django, если data передается как context, т.е. return (request, 'monitor.html', {"data_context": json_data['data']})?

Так как у вас все настроено, ваши данные находятся в словаре под названием 'data_context'. Для доступа к тому, что вам нужно в шаблоне, это будет {{data_context.test1A}}.

чтобы не использовать 'data_context.', попробуйте вместо этого следующее,

return (request, 'monitor.html', json_data['data'].to_dict())

Поиск по словарю, поиск по атрибутам и поиск по списку-индексу реализованы с помощью точечной нотации:

  {{ my_dict.key.key_nested }}

Поскольку формат JSON ведет себя как словарь в Python, данные, хранящиеся с указанными ключами conf и loc, должны быть доступны с помощью нотации python для словарей. Поскольку предоставленный JSON может рассматриваться как вложенный словарь, вам необходимо "конкатенировать" ключи соответственно, чтобы получить желаемые данные.

Ваш оператор return возвращает словарь, который я буду называть ret, поэтому структура должна быть такой:

{"data_context": {

    "node-A": {
        "test1": "val1A",
        "test2": "val2A",
        "progress": {
            "conf": "conf123A",
            "loc": "loc123A"
            },
        "test3": "val3A"
        },
     "node-B": {
        "test1B": "val1B",
        "test2B": "val2B",
        "progress": {
            "conf": "conf123B",
            "loc": "loc123B"
            },
        "test3": "val3B"
        }
    }
}

Для доступа к conf и loc:

ret["data_context"]["node-A"]["progress"]["conf"]

получит значение, сохраненное по адресу conf в node-A

Вернуться на верх