Django模板 - 新的变量声明

时间:2009-04-05 15:37:15

标签: python django django-templates

让我作为序言我刚刚开始使用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 个答案:

答案 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

来自此帖子的johnyarden

How to set a value of a variable inside a template code?

答案 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 ...