在 django 模板中,我需要使用 forloop.counter0 来访问列表中的元素。例如:
{% for foo in bar %}
<p>{{data[{{forloop.counter0}}]}}</p>
{%endfor%}
该表示法不起作用 - 我猜“无法解析其余部分:[{{forloop.....]”
那么...我如何使用变量 forloop.counter0 作为另一个变量(数据)的索引,该变量是 django 模板中的列表?
编辑:为什么我认为我需要这样做......简短的故事是我有一个内联表单集。表单集(我们称之为“折扣”)很简单 - 描述(只是向用户显示的标签)和关联的折扣百分比。用户只需输入%即可。该表单集在客户表单中使用。使用 inlineformset_factory(客户,折扣,......)。还必须在该折扣表单中设置 2 个外键(对于正在创建的 Customer 实例,以及 MetaGroup,请参见下文)。但这些都是隐藏字段,而且很容易做到。
但是,该表单集中所需的表单数量由另一个表中的实例决定(我们将其称为“MetaGroup”)。例如。元组包含诸如椅子、 table 、沙发之类的条目。我的“折扣”内联表单集为用户提供了一种在每个元组上设置折扣百分比的方法。
因此在模板中我这样做:
...
<tbody>
<managmeent forms, error stuff here>
{% for form in formset %}
<td>{{form.field.pourcent}}</td>
这是我需要访问数据的 forloop[fooloop.counter0]。数据是由我用来呈现该表/片段的包含提供的......
编辑:接受的答案是狭隘问题的解决方案 - 我可能不应该这样做。对于更广泛的问题(例如,为什么我认为我需要这样做),我最终使用了 detailed here 。 .
最佳答案
请不要。 Django 模板故意受到限制,不这样做,因为业务逻辑属于 View ,而不是模板。
在 View 中,您可以压缩 bar
和 data
,因此 View 如下所示:
def my_view(request):
bar = …
data = …
context = {
'bar_data': <b>zip(bar, data)</b>
}
return render(request, <i>'some-template.html'</i>, context)
并渲染它:
{% for <b>foo, datum</b> in bar_data %}
<p>{{ datum }}</p>
{%endfor%}
关于Django 模板 : using forloop. 计数器作为列表的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67961063/