在Django中连接两个通过模板呈现的变量

时间:2011-08-29 21:55:32

标签: python html django

  

半简要概述......

     

--- Indices是一个Python列表,它与HTML表的总行数相对应。例如,如果列有5行,则列表为[0,1,2,3,4]。

     

--- RowNames是HTML表行的各个名称的Python列表。例如[标题,年份,作者,日期,州]

     

--- ColData是填充与行对应的HTML表格列的数据。例如[“Great Scott”,1989,“James Bixby”,“12-4-2011”,“MA”]

     

这是我需要做的......

{% for Index in Indices %} 
       <tr>
             <td width='11%' align='right'><strong>{{ RowNames.Index }}</strong></td>   
             <td width='89%' align='left'>{{ ColData.Index }}</td>      
      </tr>             
{% endfor %}     
  

但是,Django不会将{{RowNames.Index}}或{{ColData.Index}}解释为列表的第i个元素。如何重新编码上面的内容,以便将其解释为列表中的第i个元素?

     

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以通过forloop.counter0访问元素的索引(请参阅here)。

好的,我记得错了。基本上你应该像这样解决问题: 要么创建对象列表,要么创建元组列表。 Django不支持这个原因 - 编程不应该在模板中完成。

使用python的zip()函数,您可以使用以下格式创建元组列表:[(rowname,coldata),(rowname,coldata)...]

mydata = zip(rowname_list, coldata_list)

现在,在您的模板中,您可以像这样迭代每个rowname和coldata:

{% for rowname,coldata in mydata %}
<tr>
    <td width='11%' align='right'><strong>{{ rowname }}</strong></td>   
    <td width='89%' align='left'>{{ coldata }}</td>      
</tr>  
{% endfor %}