2017-07-23 83 views
1

我使用django 1.11和python 3.5.2。在for語句中通過django模板中的索引訪問列表?

這是我的代碼在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}} %} 

,但它不工作。

關於代碼如何工作的任何想法?

回答

1

看起來你只需要一個循環雙:

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

呀它的工作原理,但它給了我一個錯誤的渲染。我需要用變量 –

+0

替換索引@AngelPineda你需要強制索引在listaXML級別或子列表?也許在循環之前更改對象更容易,只是一個想法,我不知道你期望的是什麼 – PRMoureu

+0

@PRMoreu我需要強制在listaXML級別索引,最後我不能。我不得不修改發送給模板的參數。 –

相關問題