让我作为序言我刚刚开始使用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。
答案 0 :(得分:20)
查看for
循环上的documentation。
它会自动创建一个名为forloop.counter
的变量,用于保存当前的迭代索引。
关于如何声明变量的更大问题,使用Django没有现成的方法,并且它不被认为是缺少的功能而是功能。如果你真的想这样做,可以使用custom tags,但在大多数情况下你想要遵循的哲学是,你想要做的任何事情都需要这样做,这应该在视图中完成,模板应该是保留用于非常简单的逻辑。例如,对于总计总计的示例,您可以使用add过滤器。同样,您可以create your own filters与标签一样。
答案 1 :(得分:7)
如果要在Django模板中设置任何变量,可以使用this small template tag I've written。
答案 2 :(得分:3)
这是怎么做的:
{% with name="World" greeting="Hello" %}
<html>
<div>{{ greeting }} {{name}}!</div>
</html>
{% endwith %}
另见:with tag
来自此帖子的john和yarden答案 3 :(得分: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 %}
Templatetag:
@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 ...