【问题标题】:Concatenating two variables in Django that are being rendered via a template连接 Django 中通过模板呈现的两个变量
【发布时间】:2025-11-30 09:30:01
【问题描述】:

半简要概述...

--- 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 个元素?

提前致谢。

【问题讨论】:

    标签: python html django


    【解决方案1】:

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

    好吧,我记错了。基本上你应该这样处理问题: 创建对象列表或元组列表。 Django 不支持这个是有原因的——编程不应该在模板中完成。

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

    mydata = zip(rowname_list, coldata_list)
    

    现在在您的模板中,您可以像这样遍历每个行名和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 %}
    

    【讨论】:

    • 谢谢。但我不确定这是否能解决问题。这给出了循环当前迭代的计数,但它并没有解决能够将该计数连接到任何列表以访问列表的特定索引的问题。还是我错过了什么?
    • 太棒了,这就是我在发布问题后立即开始的方式。这是正确的方法。感谢您的帮助。