13

让我以我刚刚开始使用 Python 作为序言,所以如果这真的是一个简单的问题 ^_^

我有一个包含以下内容的 html 文件:

        {%for d in results%}
        <div class="twt">
            <img src="{{ d.profile_image_url }}" width="48px" height="48px" /> <span> {{ d.text }} </span>
            <span class="date">{{ d.created_at }}</span>
        </div>
    {% endfor %}

效果很好,但我也想在此页面上声明一个变量。假设对于这个例子,我们可以将它的 RowNumber 为每个显示的 d 增加,吐出当前的 RowNumber。

我试着做:

{{ RowNumber = 0}} 
{{ RowNumber ++ }}

但它似乎不允许我声明 RowNumber。

4

4 回答 4

21

查看有关循环的文档。for

它会自动创建一个名为forloop.counter保存当前迭代索引的变量。

至于如何声明变量的更大问题,Django 没有开箱即用的方法,它不被认为是缺少的功能,而是一个功能。如果您真的想这样做,可以使用自定义标签,但在大多数情况下,您要遵循的理念是,您想要做的任何事情都需要在视图中完成,并且模板应该保留给非常简单的逻辑。例如,对于汇总总计的示例,您可以使用添加过滤器。同样,您可以像使用标签一样创建自己的过滤器。

于 2009-04-05T15:38:44.903 回答
6

如果你想在 Django 模板中设置任何变量,你可以使用我写的这个小模板标签

于 2011-02-18T10:38:13.107 回答
3

这是怎么做的:

{% with name="World" greeting="Hello" %}     
<html>
<div>{{ greeting }} {{name}}!</div>
</html>
{% endwith %}

另见:带标签

来自这篇文章 的johnyarden :如何在模板代码中设置变量的值?

于 2013-10-13T18:43:18.310 回答
2

在模板中:

{% for outer_obj in outer_list %}
    {% for inner_obj in inner_list %}
         {% increment_counter forloop.counter0 forloop.parentloop.counter0 outer_list.count %}
    {% endfor %}
 {% endfor %}

模板标签:

@register.simple_tag
def increment_counter(outer, inner, outer_loop_length):
    return outer + inner * outer_loop_length + inner * (outer_loop_length - 1)

结果:0 1 2 3 ...

于 2011-11-14T20:51:48.830 回答