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

时间:2017-07-23 07:16:25

标签: python django list loops templates

我使用的是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
      })

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

最后我有一个列表列表,每个列表都有一个部分的值,这意味着如果我有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}} %}

但它没有用。

关于代码如何工作的任何想法?

1 个答案:

答案 0 :(得分:1)

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

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