Django 模板 : using forloop. 计数器作为列表的索引

标签 django templates

在 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 中,您可以压缩 bardata,因此 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/

相关文章:

Python、Django 无法运行我的服务器

c++ - 如何对嵌套类型进行部分模板特化?

c++ - 为什么 std::function 作为 std::not2 的参数?

python - 如何在 Django 中创建 slug?

c++ - 为什么可变参数模板在模板介绍中不起作用,但在 requires 子句中起作用? ConceptName{T,U,V,W} <-- 模板<类型名 ...T>

c++ - 使用 C++ 模板时出现错误 C2955 和错误 C2244

c++ - 调用模板函数时编译器错误

django - NOT NULL 约束失败 : history. user_id

django - 在 Django 中扩展一个 contrib 模型的字段

python - Django 表单在生产与 LH 上找不到正确的 ID int 增量