Python 根据Django模板中的JSON嵌套值(数组)

Python 根据Django模板中的JSON嵌套值(数组),python,arrays,json,django,Python,Arrays,Json,Django,我有以下带有下一个结构的JSON文档: { "paciente": { "id": 1234, "nombre": "Pablo Andrés Agudelo Marenco", "sesion": { "id": 12345, "juego": [ { "nombre": "bonzo", "nivel": [ { "id": 1234

我有以下带有下一个结构的
JSON
文档:

{
  "paciente": {
    "id": 1234,
    "nombre": "Pablo Andrés Agudelo Marenco",
    "sesion": {
      "id": 12345,
      "juego": [
        {
          "nombre": "bonzo",
          "nivel": [
            {
              "id": 1234,
              "nombre": "caida libre",
              "segmento": [
                {
                  "id": 12345,
                  "nombre": "Hombro",
                  "movimiento": [
                    {
                      "id": 1234,
                      "nombre": "Flexion",
                      "metricas": [
                        {
                          "min": 12,
                          "max": 34,
                          "media": 23,
                          "moda": 20
                        }
                      ]
                    },
                    {
                      "id": 12345,
                      "nombre": "Extensión",
                      "metricas": [
                        {
                          "min": 12,
                          "max": 34,
                          "media": 23,
                          "moda": 20
                        }
                      ]
                    }
                  ]
                },
                {
                  "id": 12345,
                  "nombre": "Escápula",
                  "movimiento": [
                    {
                      "id": 1234,
                      "nombre": "Protracción",
                      "metricas": [
                        {
                          "min": 12,
                          "max": 34,
                          "media": 23,
                          "moda": 20
                        }
                      ]
                    },
                    {
                      "id": 12345,
                      "nombre": "Retracción",
                      "metricas": [
                        {
                          "min": 12,
                          "max": 34,
                          "media": 23,
                          "moda": 20
                        }
                      ]
                    }
                  ]
                }
              ],
              "___léeme___": "El array 'iteraciones' contiene las vitorias o derrotas con el tiempo en segundos de cada iteración",
              "iteraciones": [
                {
                  "victoria": true,
                  "tiempo": 120
                },
                {
                  "victoria": false,
                  "tiempo": 232
                }
              ]
            }
          ]
        }
      ]
    }
  }
}
有时,
segmento
数组

"paciente": ...
   "sesion": ...
       "juego": ...
           **"segmento":[{"id": ...,"nombre":...},{"id": ...,"nombre":...},{"id": ...,"nombre":...}]** 
附带了不止一个值,两个、三个和四个值,包括所有值还是不包括

我应该以以下方式在Django模板中显示这些
segmento.nombre
值:

每个
segmento.nombre
值我应该在模板中的一个选项卡
html div
中显示它,例如:

如果在我的
JSON
文档中,我只在
segmento
数组中读取了两个值

{
  "segmento": [{
    "id": 12345,
    "nombre": "Escapula",
  }, {
    "id": 12345,
    "nombre": "Hombro",
  }]
}
然后,我应该在模板中显示这两个值:

我正在阅读JSON文档

<code> ...
with open('ProcessedMetrics.json') as data_file:
            session_data=json.loads(data_file.read())
            context['session_data'] = session_data
<code> ...
在我的模板中,我正在执行以下操作:

<!-- jugar con los ciclos del segmento, movimiento -->
<div class="box-body">

  <!-- begin corporal segments tabs -->
  <div class="nav-tabs-custom">
    {% for nest1 in session_data.paciente.sesion.juego %}
        {% for nest2 in nest1.items %} <!-- get all games (juego array)-->
            {%for nest3 in nest2%}
                <ul class="nav nav-tabs">
                    <li class="active">                                  
                        <a href="#mano" data-toggle="tab" aria-expanded="true"><i class="fa fa-check-square">{{nest3}}</i> 
                                            </a></li>   

            {%endfor%}    
        {%endfor%}    
    {%endfor%}    
                    <li><a href="#codo" data-toggle="tab" aria-expanded="false"><i class="fa fa-check-square"></i> other tab hardcoded</a></li>
                </ul>

{会话_data.paciente.sesion.juego%}
{nest1.items%}
{nest2%中nest3的%
  • {%endfor%} {%endfor%} {%endfor%}
目前为止,我得到的结果是:

我在转发
nivel
segmento
数组时遇到问题。。。 我不知道如何以最佳方式访问嵌套元素

有人可以告诉我,这个想法是根据
segment
array的值的数量来生成选项卡


我非常感谢您的支持

这个答案在其他论坛上与我分享,我添加了标签,它与JSON中的
值相关

键位于
ul
div
中的选项卡
href
标识符中,我在其中创建了选项卡,并与部署这些选项卡内容的
div id
相关

通过这种方式,我也知道这是否是最好的选择

<div class="box-body">
    <!-- begin corporal segments tabs -->
        <div class="nav-tabs-custom">
            <ul class="nav nav-tabs">
                {% for nest1 in session_data.paciente.sesion.juego %}
                    {% for nest2 in nest1.nivel %} 
                        {%for nest3 in nest2.segmento%}
                            <li><a href="#{{nest3.nombre}}" data-toggle="tab" aria-expanded="true"><i class="fa fa-check-square"></i> {{nest3.nombre}}</a></li>
                        {%endfor%}
                    {%endfor%}
                {%endfor%}    
            </ul>
<!--- Content of tabs generated above -->                                   
<div class="tab-content">
    {% for nest1 in session_data.paciente.sesion.juego %}
        {% for nest2 in nest1.nivel %}
            {%for nest3 in nest2.segmento%}

            <!-- /.tab-pane  Correlation with href tab above-->

                <div class="tab-pane" id="{{nest3.nombre}}">
                <!-- The timeline -->
                    <div class="box-body table-responsive no-padding">
                       .... More code ....
                    </div>
               </div>
        ......
 </div>

    {会话_data.paciente.sesion.juego%} {nest1.nivel%} {nest2.segmento%}
  • {%endfor%} {%endfor%} {%endfor%}
{会话_data.paciente.sesion.juego%} {nest1.nivel%} {nest2.segmento%} .... 更多代码。。。。 ......
这样,我可以根据JSON读取中my
segmento
键中的值数量生成特定的选项卡编号,并将其与这些选项卡关联到各自的内容

如果有人有更好的选择,请评论!! 例如,最好不要在我的模板中执行许多循环,这是在客户端旁边处理的,真的吗

我可以在我的视图中读取json,打开字典,对它们的数据进行一些处理并将它们发送到我的模板吗


谢谢

您真的应该在Python中处理庞大的JSON结构,并使模板中的代码尽可能简单。从这个意义上说,将JSON转换为字典并将其发送到模板可能是一种选择吗?您已经这样做了(JSON.loads将JSON转换为字典)。我将创建一个Python函数,该函数接受该字典并返回在模板中最容易使用的确切格式,然后从视图中调用该函数。