django 模板中的自定义计数器

ani*_*k_s 4 python django django-templates

我在 django 模板页面中有这段代码

<select class="selectpicker datatable-column-control" multiple
{% for q_group in question_groups %}
    <optgroup label="{{ q_group.name }}">
    {% for q in  q_group.questions %}
        <option value="{{ forloop.counter0 }}">{{ q.title }}</option>
    {% endfor %}
    </optgroup>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我想要每个选项标签的值在每次迭代中都会增加。如果我有 10 个选项标签,那么它们的值将从 0 到 9。这 forloop.counter0不能满足我的需求,因为当外循环完成一次时,内循环计数器初始化为 0。

fal*_*tru 7

itertools.count将对象传递给模板怎么样?

模板:

<select class="selectpicker datatable-column-control" multiple>
{% for q_group in question_groups %}
    <optgroup label="{{ q_group.name }}">
    {% for q in  q_group.questions %}
        <option value="{{ counter }}">{{ q.title }}</option>
    {% endfor %}
    </optgroup>
{% endfor %}
</select>
Run Code Online (Sandbox Code Playgroud)

看法:

import itertools
import functools

render(request, 'template.html', {
    question_groups: ...,
    counter: functools.partial(next, itertools.count()),
})
Run Code Online (Sandbox Code Playgroud)