Как правильно перебрать JSON в DJANGO - PullRequest
0 голосов
/ 16 октября 2019

У меня есть следующие данные:

{ 
    "0":[ 
        { 
            "Y":"7",
            "J":"1038",
            "DOUBLIN":"13",
            "DPD":"13",
            "DA":"7",
            "DPD2":"7",
            "PATTERN":"+"
        }
    ],
    "1":[ 
        { 
            "Y":"15",
            "J":"1038",
            "DOUBLIN":"-3",
            "DPD":"-16",
            "DA":"-1",
            "DPD2":"-8",
            "PATTERN":"+"
        }
    ],
    "2":[ 
        { 
            "Y":"31",
            "J":"1038",
            "DOUBLIN":"-35",
            "DPD":"32",
            "DA":"-17",
            "DPD2":"16",
            "PATTERN":"+"
        }
    ],
    "3":[ 
        { 
            "Y":"63",
            "J":"1038",
            "DOUBLIN":"-99",
            "DPD":"64",
            "DA":"-49",
            "DPD2":"32",
            "PATTERN":"+"
        }
    ],
    "4":[ 
        { 
            "Y":"127",
            "J":"1038",
            "DOUBLIN":"-227",
            "DPD":"128",
            "DA":"-113",
            "DPD2":"64",
            "PATTERN":"+"
        }
    ],
    "5":[ 
        { 
            "Y":"255",
            "J":"1038",
            "DOUBLIN":"-483",
            "DPD":"256",
            "DA":"-241",
            "DPD2":"128",
            "PATTERN":"+"
        }
    ],
    "6":[ 
        { 
            "Y":"511",
            "J":"1038",
            "DOUBLIN":"-995",
            "DPD":"512",
            "DA":"-497",
            "DPD2":"256",
            "PATTERN":"+"
        }
    ],
    "7":[ 
        { 
            "Y":"1023",
            "J":"1038",
            "DOUBLIN":"29",
            "DPD":"-1024",
            "DA":"15",
            "DPD2":"-512",
            "PATTERN":"-"
        }
    ],
    "8":[ 
        { 
            "Y":"2047",
            "J":"1038",
            "DOUBLIN":"-2019",
            "DPD":"-2048",
            "DA":"-1009",
            "DPD2":"-1024",
            "PATTERN":"-"
        }
    ]
}

Я использовал этот код в своем HTML, который я получаю из ip = response.json() в views.py:

{% extends 'base.html' %}

{% block content %}
  <h2>HERE SERIOUSLY</h2>
  {% for i in ip %}

       <p>Your data is <strong>{{ i }}</strong></p>

  {% endfor %}
{% endblock %}

Но выводтолько первые цифры, мне нужно получить доступ ко всем данным. Когда я пытаюсь i.Y, оно пустое, и я ожидаю, что первое будет 7.

Вот вывод:

Your Data is 0
Your Data is 1
Your Data is 2
Your Data is 3
Your Data is 4
Your Data is 5
Your Data is 6
Your Data is 7
Your Data is 8

Может кто-нибудь помочь мне понять, как правильно перебирать моиjson, чтобы я мог построить таблицу <td> из всех данных внутри каждого элемента?

ОТВЕТИЛ, я изменил свой код на:

{% block content %}
  <h2>HERE SERIOUSLY</h2>
{% for i, data in ip.items %}
  {% for x in data %}
    <p>Your data is <strong>{{ i }} {{ data.0 }}</strong></p>
    <p>Your x in data is {{ x }}</p>
    <p>Your x.Y in data is {{ x.Y }}</p>
  {% endfor %}
{% endfor %}

{% endblock %}

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

Ответы [ 2 ]

2 голосов
/ 16 октября 2019

Поскольку ip является dict, вы должны использовать .items для доступа к ключам и значениям:

{% for index, data in ip.items %}
  <p>Your data #{{ index }} is <strong>{{ data }}</strong></p>
{% endfor %}

Поскольку data является отдельным элементом list, вы должныполучить первый (0 th) элемент и использовать следующий синтаксис для доступа к элементам:

{{ data.0.DOUBLIN }}
0 голосов
/ 16 октября 2019

Для доступа к "Y" мы можем сделать:

<p>Your data is <strong>{{ ip.i.0.Y }}</strong></p>

На первой итерации, когда i = "0":

  • ip.i дает [{"Y":"7","J":"1038","DOUBLIN":"13","DPD":"13","DA":"7","DPD2":"7","PATTERN":"+"}].
  • ip.i.0 дает {"Y":"7","J":"1038","DOUBLIN":"13","DPD":"13","DA":"7","DPD2":"7","PATTERN":"+"}.
  • ip.i.0.Y дает "7".

Более элегантный способ сделать это - использовать items:

{% for i, data in ip.items %}
    <p>Your data is <strong>{{ i }} {{ data.0.Y }}</strong></p>
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...