Skip to main content
 首页 » 编程设计

python之在for语句中的django模板中按索引访问列表

2025年02月15日36www_RR

我使用的是 django 1.11 和 python 3.5.2。

这是我在 views.py 中的代码的重要部分

ListaValoresLeidosXML = [] 
 
for sec in secciones: 
    print(sec.contenidoxml) 
 
    treexml = ET(fromstring(sec.contenidoxml)) 
    Lista = [] 
 
    for child in treexml.findall('caracteristica'): 
        nombre = child.find('nombre').text 
        Lista.append(nombre) 
    ListaValoresLeidosXML.append(Lista) 
 
for lista in ListaValoresLeidosXML: 
    for valor in lista: 
        print(valor) 
    print('*****') 
 
return render(request, 'editarCatElem.html', { 
      'elemento': ElemSeg, 
      'link': tutorial, 
      'subelementos': subelementos, 
      'secciones': secciones, 
      'listaXML' : ListaValoresLeidosXML 
      }) 

我正在读取数据库中的一个字符串字段,它包含一个 xml 格式的文本,使用 treexml 我可以获得所有属性。

最后我有一个列表列表,每个列表都有一个部分的值,这意味着如果我有 n 个部分,那么我将在列表中有 n 个列表.

我正在向我的模板发送一个名为 ListaXML 的列表。

在我的模板中,我试图对其进行迭代

{% for seccion in secciones %} 
 
    <div style="display: block" class="form-group"> 
        <div style="display: block" class="form-group"> 
            <label class="control-label col-md-2" for="nombreSeccion">Sección <span class="required">*</span></label> 
            <div class="col-md-2"><input type="text" value='{{ seccion.nombre }}' id="nombreSeccion" name="secciones[][nombreSeccion]" class="form-control col-md-2"></div> 
            <label class="control-label col-md-2" for="descSeccion">Descripción <span class="required">*</span></label> 
            <div class="col-md-2"><input type="text" value='{{ seccion.descripcion }}' id="descSeccion" name="secciones[][descripcionSeccion]" class="form-control col-md-2"></div> 
        </div> 
        <div class="col-md-offset-2 col-md-7"> 
 
            <div class="form-horizontal form-label-left" style="background:lightblue; padding:8px;"> 
 
                    {% for caracteristica in listaXML %} # <-- Here is the problem!! 
 
                    <div class="form-group"> 
                        <label class="control-label col-md-2" for="nombreCampo">Campo <span class="required">*</span></label> 
                        <div class="col-md-4"> 
                            <input type="text" value='{{ caracteristica }}' name="secciones[][campos][][nombreCampo]" id="nombreCampo" class="form-control col-md-2"> 
                        </div> 
                    </div> 
                    {% endfor %} 
 
                <div class="form-group"> 
                    <button type="button" class="btn btn-primary col-sm-offset-0 col-sm-3" onclick="agregarCampo(event);"><i class="fa fa-plus"> </i> Agregar campo</button> 
                    <button type="button" class="btn btn-danger col-sm-offset-1 col-sm-3" onclick="eliminarCampo(event);"><i class="fa fa-minus"> </i> Eliminar campo</button> 
                </div> 
            </div> 
        </div> 
    </div> 
 
{% endfor %} 

问题是我需要在每次重复时都这样做:

{% for caracteristica in listaXML.0 %} 
{% for caracteristica in listaXML.1 %} 
{% for caracteristica in listaXML.2 %} 
{% for caracteristica in listaXML.3 %} 
... 

我需要增加最后的数字(列表的索引)。

我试过了

{% for caracteristica in listaXML.forloop.counter0 %} 

或

{% for caracteristica in listaXML.{{forloop.counter0}} %} 

但它不起作用。

知道代码是如何工作的吗?

请您参考如下方法:

看起来你只需要一个双 for 循环:

{% for lista in listaXML %} 
    {% for caracteristica in lista %} 
        <div class="form-group"> 
        [...] 
    {% endfor %} 
{% endfor %}