2012-09-09 23 views
1

我不确定我是否发现了一个错误,是否让我的系统配置错误,或者只是误解了Django中的{%cycle%}模板标记。误解Django中的循环标记

该手册提供以下示例代码:

{% cycle 'row1' 'row2' as rowcolors silent %}{# no value here #} 
{% for o in some_list %} 
    <tr class="{% cycle rowcolors %}">{# first value will be "row1" #} 
     ... 
    </tr> 
{% endfor %} 

它清楚地说,在第一周期声明将输出什么,和随后的呼叫将在第一次迭代。

我有以下问题:首先,第二次调用输出'row2',这将在第二次调用中预期。其次,随后的{%cycle rowcolors%}调用也不会输出任何内容!

我完全误解了一些东西,或者标签不能像指定的那样工作?

+0

在文档中找不到您的示例代码(https://docs.djangoproject.com/en/1.4/ref/templates/builtins/#cycle)。你有链接吗? – j0ker

+0

我错了,我以为我从文档中得到了样本,但它实际上来自代码本身。第534-539行,在这里:https://github.com/django/django/blob/master/django/template/defaulttags.py – Brendon

回答

1

据我所知,代码是循环函数的文档字符串不同于the actual documentation中的代码示例。您应该使用{{ rowcolors }}来显示循环文本。

其次,随后的{%cycle rowcolors%}调用也不会输出任何东西!

从文档:

当无声关键字上的周期定义中使用的,沉默自动适用于循环标记的所有后续使用。在下面的模板中不会输出任何内容,即使第二次调用{%cycle%}没有指定无声:

该段后面的代码示例看起来与您当前的问题类似。

+0

因此,他们似乎已经更新了文档字符串,然后他们更新了代码?我不愿意认为相反的结论是正确的,即文档字符串中的功能是标签*使用*的工作方式,因为文档字符串行为更合乎需要。 – Brendon

+0

据我所知,文档和代码已更新(以解决https://code.djangoproject.com/ticket/15570),但文档字符串不是。我在Django bug跟踪器上提交了一张票(https://code.djangoproject.com/ticket/18933),并提交了一个拉取请求来解决这个问题。 – Martey